C++ ATL 成员变量访问帮助

Posted

技术标签:

【中文标题】C++ ATL 成员变量访问帮助【英文标题】:C++ ATL Member Variable access help 【发布时间】:2010-09-29 20:03:38 【问题描述】:

我不熟悉这个,可以使用kick start。

我正在使用 ATL(非托管 C++)用户控件并希望使用 ShockWave ActiveX 对象。我需要知道如何声明它,以便设置属性或调用方法。

例如,如果我可以为其分配一个变量,那么我想调用 'variable->LoadMovie()'

我知道这太荒谬了……在这里问它几乎是尴尬的。 ;)(几乎)

【问题讨论】:

【参考方案1】:

如果您#import dll(我建议在使用 COM 时这样做,因为它让您的生活变得如此轻松),您可以使用与对象的 CLSID 配对的智能指针。请记住,智能指针类在接口名称后有后缀“Ptr”。

例如:

ISomeInterfacePtr pSomeInterface( CLSID_SomeComponent );
HRESULT hr = pSomeInterface->SomeMethod();

希望对您有所帮助。

编辑:如果要检查分配的 HRESULT,可以执行以下操作:

ISomeInterfacePtr pSomeInterface = 0;
HRESULT hr = pSomeInterface.CreateInstance( CLSID_SomeComponent );

【讨论】:

太棒了,这是关键。谢谢。【参考方案2】:

我多次剪切和粘贴必要的代码,我不记得确切的语法,但你必须:

获取正确接口的 CComPtr, 创建实例对象 QueryInterface 获取你想要的接口(假设你没有使用 CComPtr)

然后在上面调用方法。

您也可以#import dll,然后编译器将为您生成一个包含所有方法和属性的 c++ 类。

【讨论】:

以上是关于C++ ATL 成员变量访问帮助的主要内容,如果未能解决你的问题,请参考以下文章

C++ 使用变量访问类的公共成员

让公共成员变量访问 C++ 中同一类的私有成员

关于C++静态成员函数访问非静态成员变量的问题

静态成员变量和静态成员函数(C++)

C++中类里面定义 静态成员变量的问题

C++ 静态成员变量的引用