共用方式為


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

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

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

lpszWindowName
要在控制項的 Text 或 Caption 屬性 (如果有的話) 中顯示的文字指標。

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

矩形
指定控制項的大小和位置。

pParentWnd
指定控制項的父視窗,通常是 CDialog。 它不得為 Null

nID
指定控制項 ID,而且可以由容器使用以參考控制項。

使用此函式動態建立 ActiveX 控制項的範例會在 SDI 應用程式的表單檢視中。 您接著可以在應用程式的 WM_CREATE 處理常式中建立控制項的執行個體。

對於這個範例中,CMyView 是主要檢視類別,而 CCirc 是包裝函式類別,CIRC.H 則是包裝函式類別的標頭 (.H) 檔案。

實作此功能需要四個步驟。

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

  1. 只要在 CMyView 類別定義之前,於 CMYVIEW.H 中插入 CIRC.H:

    #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 使用 this 指標做為父視窗,對控制項的 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 控制項容器