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 成员变量访问帮助的主要内容,如果未能解决你的问题,请参考以下文章