C++ ATL成员变量访问帮助
我对此不太熟悉,可以使用踢启动。
我正在使用 ATL(非托管 C++)用户控件并希望使用 ShockWave ActiveX 对象。 我需要知道如何声明它,以便我可以设置属性或调用方法。
例如,如果我可以为其分配一个变量,那么我想调用“variable->LoadMovie()”
我知道这非常荒谬......几乎不好意思在这里问它。 ;) (几乎)
I am not familiar with this, and can use a kick start.
I am using ATL (unmanaged C++) user control and would like to use the ShockWave ActiveX object. I need to know how to declare it so that I can set a property or call a method.
For instance, if I could assign a variable to it, then I would like to call 'variable->LoadMovie()'
I know this is super ridiculous... almost embarrassed to ask it here. ;) (almost)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您 #import dll(我在使用 COM 时建议这样做,因为它使您的生活变得更加轻松),您可以使用与对象的 CLSID 配对的智能指针。 请记住,智能指针类在接口名称后面有后缀“Ptr”。
例如:
希望有帮助。
编辑:如果您想检查分配的 HRESULT,您可以执行以下操作:
If you #import the dll (which I recommend when working with COM because it makes your life SO much easier), you can use a smart pointer paired with the CLSID of the object. Remember that smart pointer classes have the post-fix 'Ptr' after the interface name.
For instance:
Hope that helps.
EDIT: If you want to check the HRESULT of the allocation, you can do the following:
我多次剪切和粘贴必要的代码,我不记得确切的语法,但你必须:
获取 CComPtr<> 正确的接口,
创建实例对象
QueryInterface 获取您想要的接口(假设您没有使用 CComPtr),
然后调用它的方法。
或者,您可以 #import dll,然后编译器将为您生成一个包含所有方法和属性的 C++ 类。
I cut&paste the necessary code so many times I can't remember the exact syntax but you have to:
get a CComPtr<> of the correct interface,
CreateInstance the object
QueryInterface to get the interface you want (assuming you're not using the CComPtr)
then call methods on it.
Alternatively you can #import the dll, then the compiler will generate a c++ class with all the methods and properties for you.