ActiveX-Steuerelementcontainer: Verwenden von Steuerelementen in einem Nicht-Dialogfeld Container
In einigen Anwendungen, z. B. einer SDI- oder MDI-Anwendung, sollten Sie ein Steuerelement in einem Fenster der Anwendung einbetten.Die Create-Memberfunktion der Wrapperklasse von Visual C++ eingefügt, kann eine Instanz des Steuerelements, ohne dass ein Dialogfeld für dynamisch erstellen.
Die Create-Memberfunktion besitzt die folgenden Parameter:
lpszWindowName
Ein Zeiger auf den in der Text- oder Caption-Eigenschaft anzuzeigenden Text des Steuerelements (sofern vorhanden).dwStyle
Windows-Formate.Eine vollständige Liste finden Sie CWnd::CreateControl.rect
Gibt die Größe und die Position des Steuerelements an.pParentWnd
Gibt das übergeordnete Fenster des Steuerelements, normalerweise CDialog an.Er darf nicht NULL sein.nID
Gibt die Steuerelement-ID an und kann vom Container verwendet werden, um das Steuerelement zu verweisen.
Ein Beispiel für die Verwendung dieser Funktion, um ein ActiveX-Steuerelement dynamisch erstellen würde in einer Formularansicht einer SDI-Anwendung sein.Sie könnten eine Instanz des Steuerelements im WM_CREATE-Handler der Anwendung auf Erstellen.
Für dieses Beispiel ist CMyView die Hauptversionsnummer Ansichtsklasse, ist CCirc die Wrapperklasse, und CIRC.H ist der Header (. H. der Wrapperklasse Datei)
Diese Funktion zu implementieren ist ein vier Schritte.
So fügen Sie ein ActiveX-Steuerelement in einem Nicht Dialogfeld Fenster Dynamisches Erstellen
Fügen Sie in CIRC.H CMYVIEW.H, kurz vor der CMyView-Klassendefinition ein:
#include "circ.h"
Fügen Sie eine Membervariable (vom Typ CCirc) dem geschützten Abschnitt der CMyView-Klassendefinition in CMYVIEW.H hinzu:
class CMyView : public CView { ... protected: CCirc m_myCtl; public: afx_msg void OnViewCircdlg(); };
Fügen Sie einen WM_CREATE Meldungshandler CMyView-Klasse hinzu.
In der 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.