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

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

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

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

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

【问题讨论】:

    标签: c++ activex atl shockwave


    【解决方案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++ 类。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-11
      • 2015-12-06
      • 1970-01-01
      • 2017-03-11
      相关资源
      最近更新 更多