1

我对此不熟悉,可以使用kick start。

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

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

我知道这太荒谬了……几乎不好意思在这里问。;) (几乎)

4

2 回答 2

1

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

例如:

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

希望有帮助。

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

ISomeInterfacePtr pSomeInterface = 0;
HRESULT hr = pSomeInterface.CreateInstance( CLSID_SomeComponent );
于 2009-01-06T15:23:41.043 回答
0

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

获取正确接口的 CComPtr<>,CreateInstance 对象 QueryInterface 以获取您想要的接口(假设您没有使用 CComPtr)

然后调用它的方法。

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

于 2009-01-06T15:20:49.350 回答