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

发布于 2024-07-10 20:43:11 字数 217 浏览 7 评论 0原文

我对此不太熟悉,可以使用踢启动。

我正在使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

从﹋此江山别 2024-07-17 20:43:11

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

例如:

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

希望有帮助。

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

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

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:

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

Hope that helps.

EDIT: If you want to check the HRESULT of the allocation, you can do the following:

ISomeInterfacePtr pSomeInterface = 0;
HRESULT hr = pSomeInterface.CreateInstance( CLSID_SomeComponent );
花开浅夏 2024-07-17 20:43:11

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

获取 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文