ActiveX 控制項容器: 使用非對話方塊容器中的控制項
在某些應用程式,例如 SDI 或 MDI 應用程式,您會想將控制項內嵌在應用程式的視窗中。 建立成員函式包裝函式類別,由 Visual C++ 中,插入可以建立控制項的執行個體,以動態方式而不需要的對話方塊。
建立成員函式具有下列參數:
lpszWindowName
若要顯示在控制項的 [文字] 或 [標題] 屬性 (如果有的話) 的文字指標。dwStyle
視窗樣式。 如需完整清單,請參閱 CWnd::CreateControl。rect
指定控制項的大小和位置。pParentWnd
指定控制項的父視窗,通常是CDialog。 該值不能 NULL。nID
指定控制項 ID,可用於容器所參照的控制項。
使用這個函式來動態建立 ActiveX 控制項的其中一個範例就會是 [表單檢視的 SDI 應用程式。 然後,您就可以建立控制項的執行個體WM_CREATE應用程式的處理常式。
例如, CMyView是主要的檢視類別中, CCirc成為所需的包裝函式類別和變動圓形H 是標頭 (。H) 檔的包裝函式類別。
實作這項功能是四個步驟的程序。
若要以動態方式建立 ActiveX 控制項,在非對話方塊視窗中
插入變動圓形在 CMYVIEW H。H,之前CMyView類別定義:
#include "circ.h"
加入成員變數 (型別的CCirc) 的受保護章節CMyView類別位於 CMYVIEW 的定義。H:
class CMyView : public CView { ... protected: CCirc m_myCtl; public: afx_msg void OnViewCircdlg(); };
新增WM_CREATE訊息處理常式類別CMyView。
在處理常式函式中, 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; }
重建專案。 每次建立應用程式的檢視時,將會以動態方式建立 Circ 控制項。