共用方式為


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

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

Create 成員函式具有下列參數:

  • lpszWindowName
    對控制項中的文字或標題屬性中顯示之文字的指標 (如果有的話)。

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