ActiveX 控制項容器: 使用非對話方塊容器中的控制項

在某些應用程式,例如 SDI 或 MDI 應用程式,您會想將控制項內嵌在應用程式的視窗中。建立成員函式包裝函式類別,由 Visual C++ 中,插入可以建立控制項的執行個體,以動態方式而不需要的對話方塊。

建立成員函式具有下列參數:

  • lpszWindowName
    若要顯示在控制項的 [文字] 或 [標題] 屬性 (如果有的話) 的文字指標。

  • dwStyle
    視窗樣式。如需完整清單,請參閱 CWnd::CreateControl

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

  • pParentWnd
    指定控制項的父視窗,通常是CDialog。該值不能 NULL

  • nID
    指定控制項 ID,可用於容器所參照的控制項。

使用這個函式來動態建立 ActiveX 控制項的其中一個範例就會是 [表單檢視的 SDI 應用程式。然後,您就可以建立控制項的執行個體WM_CREATE應用程式的處理常式。

例如, CMyView是主要的檢視類別中, CCirc成為所需的包裝函式類別和變動圓形H 是標頭 (。H) 檔的包裝函式類別。

實作這項功能是四個步驟的程序。

若要以動態方式建立 ActiveX 控制項,在非對話方塊視窗中

  1. 插入變動圓形在 CMYVIEW H。H,之前CMyView類別定義:

    #include "circ.h"
    
  2. 加入成員變數 (型別的CCirc) 的受保護章節CMyView類別位於 CMYVIEW 的定義。H:

    class CMyView : public CView
    {
    
    
    ...
    
    
    protected:
       CCirc m_myCtl;
    public:
       afx_msg void OnViewCircdlg();
    };
    
  3. 新增WM_CREATE訊息處理常式類別CMyView。

  4. 在處理常式函式中, CMyView::OnCreate,打電話到控制項的Create函式使用這個與父視窗的指標:

    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 控制項容器