ActiveX-Steuerelementcontainer: Verwenden von Steuerelementen in Containern, die keine Dialogfelder sind
In einigen Anwendungen, z. B. einer SDI- oder MDI-Anwendung, möchten Sie ein Steuerelement in ein Fenster der Anwendung einbetten. Die Create-Memberfunktion der Wrapperklasse, eingefügt von Visual C++, kann eine Instanz des Steuerelements dynamisch erstellen, ohne dass ein Dialogfeld erforderlich ist.
Die Funktion "Member erstellen" weist die folgenden Parameter auf:
lpszWindowName
Ein Zeiger auf den Text, der in der Text- oder Caption-Eigenschaft des Steuerelements angezeigt werden soll (falls vorhanden).
dwStyle
Windows-Formatvorlagen. Eine vollständige Liste finden Sie unter CWnd::CreateControl.
Rect
Gibt die Größe und Position des Steuerelements an.
pParentWnd
Gibt das übergeordnete Fenster des Steuerelements an, in der Regel ein CDialog
. Er darf nicht NULL sein.
Nid
Gibt die Steuerelement-ID an und kann vom Container verwendet werden, um auf das Steuerelement zu verweisen.
Ein Beispiel für die verwendung dieser Funktion zum dynamischen Erstellen eines ActiveX-Steuerelements wäre in einer Formularansicht einer SDI-Anwendung. Anschließend können Sie eine Instanz des Steuerelements im WM_CREATE
Handler der Anwendung erstellen.
In diesem Beispiel CMyView
ist die Standard Ansichtsklasse die CCirc
Wrapperklasse und CIRC. H ist die Kopfzeile (. H) Datei der Wrapperklasse.
Das Implementieren dieses Features ist ein Prozess mit vier Schritten.
So erstellen Sie ein ActiveX-Steuerelement dynamisch in einem Nicht-Dialogfeld
CIRC einfügen. H in CMYVIEW. H, direkt vor der
CMyView
Klassendefinition:#include "circ.h"
Fügen Sie eine Membervariable (vom Typ
CCirc
) zum geschützten Abschnitt der Klassendefinition hinzu, dieCMyView
sich in CMYVIEW befindet. H:class CMyView : public CView {
protected: CCirc m_myCtl; public: afx_msg void OnViewCircdlg(); } ;
Hinzufügen eines
WM_CREATE
Nachrichtenhandlers zur KlasseCMyView
.Rufen Sie in der Handlerfunktion
CMyView::OnCreate
die Funktion des Steuerelements mithilfe desthis
Zeigers als übergeordnetesCreate
Fenster auf: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.