在 ATL 对话框里, 怎样为 Activex 控件定义一个成员变量以便在程序中访问它?
我在对话框中插入了一个 Activex 控件,当不知道怎么为它定义一个控件成员变量。

解决方案 »

  1.   

    这是我实现的,在ATL对话框中加了一个RichTextBox.
    private:
    CComPtr<IRichText> m_objRichText; void FormatErrorMessage(_com_error &theErr, string &strMsg);
    LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
    {
    HRESULT hr = GetDlgControl(IDC_RICHTEXTCTRL1, IID_IRichText, (void**)&m_objRichText);
    if(FAILED(hr))
    {
    } return 0;
    }
      

  2.   

    IID_IRichText, 你是怎么知道的。它是怎么来的?
      

  3.   

    IID_IRichText,它是接口的 ID ,但我不知道它的值是多少。
    IDC_RICHTEXTCTRL1 才是控件的 ID 。
      

  4.   

    #import "组建实现的路径"
    然后利用生成的tlh文件定义成员变量,创建控件实例即可。
    比如以ActiveSkin控件为例。首先把控件放入到对话框中,然后加入
    #import "D:\WINDOWS\System32\actskin4.ocx" raw_interfaces_only, raw_native_types, no_namespace, named_guids  
    对话框的继承类改为CAxDialogImpl
    加入一个智能指针成员变量,智能指针类型可以参考编译支持生成的tlh文件。并参考ActiveSkin ActiveX控件的使用方法。基本上和MFC差不多。
    创建组件类的实例,调用其方法。