ActiveX-Steuerelementcontainer: Verwenden von Steuerelementen in Containern, die keine Dialogfelder sind
In einigen Anwendungen wie einer SDI- oder MDI-Anwendung, möchten Sie ein Steuerelement in einem Fenster der Anwendung einbetten. Die Erstellen-Memberfunktion der Wrapperklasse, eingefügt von Visual C++, können eine Instanz des Steuerelements, ohne die Anforderung ein Dialogfeld dynamisch erstellen.
Die Erstellen-Memberfunktion besitzt die folgenden Parameter:
lpszWindowName
Ein Zeiger in der Text- oder Beschriftungseigenschaft anzuzeigende Text, des Steuerelements (falls vorhanden).dwStyle
Windows-Formate. Eine vollständige Liste finden Sie unter CWnd::CreateControl.rect
Gibt die Größe und Position des Steuerelements an.pParentWnd
Gibt dem übergeordneten Fenster des Steuerelements, normalerweise CDialog an. Darf nicht NULL sein.nID
Gibt die Steuerelement-ID an und kann über den Container verwendet werden, um das Steuerelement zu verweisen.
Ein Beispiel für die Verwendung dieser Funktion, um ein ActiveX-Steuerelement dynamisch erzeugen kann in einer Formularansicht einer SDI-Anwendung sein. Sie können eine Instanz des Steuerelements im WM_CREATE-Handler der Anwendung erstellen.
Für dieses Beispiel ist CMyView die Hauptansichtsklasse, ist CCirc die Wrapperklasse, und CIRC.H ist den Header (.H) Datei der Wrapperklasse.
Diese Funktion zu implementieren ist ein vier Schritte.
So fügen Sie ein ActiveX-Steuerelement in einem NichtDialogfeldfenster dynamisch erstellen
Fügen Sie CIRC.H in CMYVIEW.H, direkt vor der Klassendefinition ein: CMyView
#include "circ.h"
Fügen Sie eine Membervariable (vom Typ CCirc) des geschützten Abschnitt der CMyView in CMYVIEW.H Klassendefinition hinzu:
class CMyView : public CView { ... protected: CCirc m_myCtl; public: afx_msg void OnViewCircdlg(); };
Fügen Sie WM_CREATE einen Meldungshandler hinzu, um CMyView- Klasse.
In die Handlerfunktion machen CMyView::OnCreate, einen Aufruf der Create-Funktion des Steuerelements mithilfe des this - Zeigers als übergeordnetes Fenster:
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; }
Erstellen Sie das Projekt neu. Ein Circ-Steuerelement wird dynamisch erstellt, wenn die Ansicht der Anwendung erstellt wird.