ActiveX 控件容器:使用在非对话框容器的控件

在某些应用程序,例如 SDI 或 MDI 应用程序,您可以在应用程序的窗口将若要嵌入控件。 包装类的 创建 成员函数,插入 Visual C++,可动态创建控件的实例中,在中,而无需进行对话框。

创建 成员函数具有以下参数:

  • lpszWindowName
    对于控件上的文本或 description 属性将显示文本的指针 (如果有)。

  • dwStyle
    窗口样式。 有关完整的列表,请参见 CWnd::CreateControl

  • rect
    指定控件的大小和位置。

  • pParentWnd
    指定控件的父窗口,通常 CDialog。 不能为 NULL

  • nID
    指定控件 ID,并且可以由容器使用引用该控件。

一个使用此函数动态创建 Activex 控件在 SDI 应用程序的窗体视图。 可以在应用程序的 WM_CREATE 处理程序可以创建控件的实例。

对于此示例, CMyView 是主视图类, CCirc 是包装类,并且, CIRC.H 为标头 (。H) 包装类的文件。

实现此功能四个步骤的过程。

动态创建 Activex 控件在非对话框窗口。

  1. 在 CMYVIEW.H 的插入 CIRC.H,在 CMyView 类定义之前:

    #include "circ.h"
    
  2. 添加一个成员变量 (类型 CCirc) 到位于 CMYVIEW.H 的 CMyView 类定义的受保护的部分:

    class CMyView : public CView
    {
    
    
    ...
    
    
    protected:
       CCirc m_myCtl;
    public:
       afx_msg void OnViewCircdlg();
    };
    
  3. 添加一个 WM_CREATE 消息处理程序类 CMyView。

  4. 在处理程序函数, CMyView::OnCreate,仅仅是对控件的 Create 函数使用 this 指针作为父窗口:

    int CMyView::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
       if (CView::OnCreate(lpCreateStruct) == -1)
          return -1;
    
       m_myCtl.Create(NULL, WS_VISIBLE, CRect(50,50,100,100), this, 0);
       m_myCtl.SetCaption(_T("Control created"));
    
       return 0;
    }
    
  5. 重新生成项目。 Circ 控件将动态创建的,无论应用程序的视图创建。

请参见

概念

ActiveX 控件容器