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 控制項
只要在
CMyView
類別定義之前,於 CMYVIEW.H 中插入 CIRC.H:#include "circ.h"
將成員變數 (為
CCirc
類型) 新增至位於 CMYVIEW.H 的CMyView
類別定義的受保護區段:class CMyView : public CView {
protected: CCirc m_myCtl; public: afx_msg void OnViewCircdlg(); } ;
將
WM_CREATE
訊息處理常式新增至類別CMyView
。在處理常式函式中,
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; }
重建專案。 每當應用程式檢視建立時,Circ 控制項就會動態建立。