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

  1. CIRC einfügen. H in CMYVIEW. H, direkt vor der CMyView Klassendefinition:

    #include "circ.h"
    
  2. Fügen Sie eine Membervariable (vom Typ CCirc) zum geschützten Abschnitt der Klassendefinition hinzu, die CMyView sich in CMYVIEW befindet. H:

    class CMyView : public CView
    {
    
    protected:
    CCirc m_myCtl;
    
    public:
    afx_msg void OnViewCircdlg();
    }
    ;
    
  3. Hinzufügen eines WM_CREATE Nachrichtenhandlers zur Klasse CMyView.

  4. Rufen Sie in der Handlerfunktion CMyView::OnCreatedie Funktion des Steuerelements mithilfe des this Zeigers als übergeordnetes Create 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;
    }
    
  5. Erstellen Sie das Projekt neu. Ein Circ-Steuerelement wird dynamisch erstellt, wenn die Ansicht der Anwendung erstellt wird.

Siehe auch

ActiveX-Steuerelementcontainer