Freigeben über


Gewusst wie: Erstellen des Benutzersteuerelements und des Hosts in einem Dialogfeld

Bei den Schritten in diesem Artikel wird davon ausgegangen, dass Sie ein dialogfeldbasiertes (CDialog Class) Microsoft Foundation Classes (MFC)-Projekt erstellen, aber Sie können auch Unterstützung für ein Windows Forms-Steuerelement zu einem vorhandenen MFC-Dialogfeld hinzufügen.

So erstellen Sie das .NET-Benutzersteuerelement

  1. Erstellen Sie ein Visual C#-Projekt für die Windows Forms-Steuerelementbibliothek mit dem Namen WindowsFormsControlLibrary1.

    Klicken Sie im Menü Datei auf Neu und dann auf Projekt. Wählen Sie im Ordner Visual C# die Windows Forms-Steuerelementbibliothek aus.

    Übernehmen Sie den WindowsFormsControlLibrary1 Projektnamen, indem Sie auf "OK" klicken.

    Standardmäßig lautet der Name des .NET-Steuerelements UserControl1.

  2. Fügen Sie UserControl1 untergeordnete Steuerelemente hinzu.

    Öffnen Sie in der Toolbox die Liste "Alle Windows Forms ". Ziehen Sie ein Schaltflächen-Steuerelement auf die UserControl1 Entwurfsoberfläche.

    Fügen Sie auch ein TextBox-Steuerelement hinzu.

  3. Doppelklicken Sie in Projektmappen-Explorer auf UserControl1.Designer.cs, um sie zur Bearbeitung zu öffnen. Ändern Sie die Deklarationen des Textfelds und der Schaltfläche von private in public.

  4. Erstellen Sie das Projekt.

    Klicken Sie im Menü Erstellen auf Projektmappe erstellen.

So erstellen Sie die MFC-Hostanwendung

  1. Erstellen Sie ein MFC-Anwendungsprojekt.

    Klicken Sie im Menü Datei auf Neu und dann auf Projekt. Wählen Sie im Ordner "Visual C++" die Option "MFC-Anwendung" aus.

    Geben Sie im Feld NameMFC01ein. Ändern Sie die Einstellung "Lösung" in " Zur Lösung hinzufügen". Klicken Sie auf OK.

    Wählen Sie im MFC-Anwendungs-Assistenten für den Anwendungstyp die Option "Dialogfeld basierend" aus. Übernehmen Sie die neu Standard Standardeinstellungen, und klicken Sie auf "Fertig stellen". Dadurch wird eine MFC-Anwendung erstellt, die über ein MFC-Dialogfeld verfügt.

  2. Fügen Sie dem MFC-Dialogfeld ein Platzhaltersteuerelement hinzu.

    Klicken Sie im Menü "Ansicht" auf "Ressourcenansicht". Erweitern Sie in der Ressourcenansicht denDialogfeldordner, und doppelklicken Sie auf IDD_MFC01_DIALOG. Die Dialogressource wird im Ressourcen-Editor angezeigt.

    Öffnen Sie in der Toolbox die Dialog-Editor-Liste . Ziehen Sie ein Statisches Text-Steuerelement auf die Dialogressource. Das Statische Text-Steuerelement dient als Platzhalter für das .NET Windows Forms-Steuerelement. Passen Sie die Größe des Steuerelements an, sodass sie mit der Größe des Windows Forms-Steuerelements übereinstimmt.

    Ändern Sie im Eigenschaftenfenster die ID des Statischen Text-Steuerelements in IDC_CTRL1 "True", und ändern Sie die TabStop-Eigenschaft in "True".

  3. Konfigurieren Sie das Projekt für Common Language Runtime (CLR)-Unterstützung.

    Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf den MFC01-Projektknoten, und klicken Sie dann auf "Eigenschaften".

    Wählen Sie im Dialogfeld "Eigenschaftenseiten" unter "Konfigurationseigenschaften" die Option "Allgemein" aus. Legen Sie im Abschnitt "Project Defaults" die Unterstützung der Common Language Runtime auf den Support für Common Language Runtime (/clr) fest.

    Erweitern Sie unter "Konfigurationseigenschaften" C/C++, und wählen Sie den Knoten "Allgemein" aus. Legen Sie das Debuginformationsformat auf die Programmdatenbank (/Zi) fest.

    Wählen Sie den Knoten " Codegenerierung " aus. Legen Sie "Minimale Neuerstellung aktivieren" auf "Nein" (/Gm-) fest. Legen Sie außerdem die Grundlegenden Laufzeitüberprüfungen auf "Standard" fest.

    Klicken Sie auf "OK ", um die Änderungen anzuwenden.

  4. Fügen Sie dem .NET-Steuerelement einen Verweis hinzu.

    Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf den Projektknoten MFC01, und klicken Sie dann auf "Hinzufügen", "Verweise". Klicken Sie auf der Eigenschaftenseite auf " Neuen Verweis hinzufügen", wählen Sie "WindowsFormsControlLibrary1 " (unter der Registerkarte "Projekte ") aus, und klicken Sie auf " OK". Dadurch wird ein Verweis in Form einer /FU-Compileroption hinzugefügt, sodass das Programm kompiliert wird. Dabei wird auch eine Kopie von "WindowsFormsControlLibrary1.dll" im Projektordner "\MFC01\" abgelegt, damit das Programm ausgeführt wird.

  5. Suchen Sie in "stdafx.h" die folgende Zeile:

    #endif // _AFX_NO_AFXCMN_SUPPORT
    

    Fügen Sie darüber die folgenden Zeilen ein:

    #include <afxwinforms.h>   // MFC Windows Forms support
    
  6. Fügen Sie Code hinzu, um das verwaltete Steuerelement zu erstellen.

    Deklarieren Sie zunächst das verwaltete Steuerelement. Navigieren Sie in "MFC01Dlg.h" zur Deklaration der Dialogklasse, und fügen Sie im geschützten Bereich folgendermaßen einen Datenmember für das Benutzersteuerelement ein:

    class CMFC01Dlg : public CDialog
    {
       // ...
       // Data member for the .NET User Control:
       CWinFormsControl<WindowsFormsControlLibrary1::UserControl1> m_ctrl1;
    

    Fügen Sie als Nächstes die Implementierung für das verwaltete Steuerelement ein. Fügen Sie in "MFC01Dlg.cpp" in der vom MFC-Anwendungs-Assistenten generierten Dialogfeldüberschreibung von CMFC01Dlg::DoDataExchange (nicht CAboutDlg::DoDataExchange, das in der gleichen Datei enthalten ist) den folgenden Code hinzu, um das verwaltete Steuerelement zu erstellen und es dem statischen Platzhalter "IDC_CTRL1" zuzuordnen:

    void CMFC01Dlg::DoDataExchange(CDataExchange* pDX)
    {
       CDialog::DoDataExchange(pDX);
       DDX_ManagedControl(pDX, IDC_CTRL1, m_ctrl1);
    }
    
  7. Erstellen Sie das Projekt, und führen Sie es aus.

    Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf MFC01, und klicken Sie dann auf "Als Startprojekt festlegen".

    Klicken Sie im Menü Erstellen auf Projektmappe erstellen.

    Klicken Sie im Menü "Debuggen " auf "Start" ohne Debugging. Im MFC-Dialogfeld wird das Windows Forms-Steuerelement angezeigt.

Siehe auch

Hosten eines Windows Form-Benutzersteuerelements in einem MFC-Dialogfeld