ActiveX – kontejnery ovládacích prvků: Použití ovládacích prvků v jiném kontejneru než dialogovém okně
V některých aplikacích, jako je aplikace SDI nebo MDI, budete chtít vložit ovládací prvek do okna aplikace. Create member function of the wrapper class, inserted by Visual C++, can create an instance of the control dynamicky, without the need for a dialog box.
Členová funkce Create má následující parametry:
lpszWindowName
Ukazatel na text, který se má zobrazit ve vlastnosti Text nebo Titulek ovládacího prvku (pokud existuje).
dwStyle
Styly Windows. Úplný seznam naleznete v tématu CWnd::CreateControl.
Rect
Určuje velikost a umístění ovládacího prvku.
pParentWnd
Určuje nadřazené okno ovládacího prvku, obvykle .CDialog
Nesmí mít hodnotu NULL.
Nid
Určuje ID ovládacího prvku a kontejner ho může použít k odkaz na ovládací prvek.
Jedním z příkladů použití této funkce k dynamickému vytvoření ovládacího prvku technologie ActiveX by bylo ve formulářovém zobrazení aplikace SDI. Pak můžete vytvořit instanci ovládacího prvku v WM_CREATE
obslužné rutině aplikace.
V tomto příkladu CMyView
je třída hlavního zobrazení, CCirc
je třída obálky a CIRC. H je záhlaví (. H) soubor třídy wrapper.
Implementace této funkce je čtyřstupňový proces.
Dynamické vytvoření ovládacího prvku technologie ActiveX v okně bez dialogového okna
Vložte CIRC. H v CMYVIEW. H, těsně před definicí
CMyView
třídy:#include "circ.h"
Přidejte členovou proměnnou (typu
CCirc
) do chráněné částiCMyView
definice třídy umístěné v CMYVIEW. H:class CMyView : public CView {
protected: CCirc m_myCtl; public: afx_msg void OnViewCircdlg(); } ;
Přidání obslužné rutiny
WM_CREATE
zprávy do třídyCMyView
.Ve funkci
CMyView::OnCreate
obslužné rutiny proveďte volání funkce ovládacího prvkuCreate
pomocíthis
ukazatele jako nadřazeného okna: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; }
Znovu sestavte projekt. Ovládací prvek Circ se vytvoří dynamicky při každém vytvoření zobrazení aplikace.