Gewusst wie: Erstellen des Benutzersteuerelements und Hosten der MDI-Ansicht
In den folgenden Schritten wird das Erstellen eines .NET Framework-Benutzersteuerelements und das Erstellen des Steuerelements in einer Steuerelementklassenbibliothek (speziell in einem Projekt einer Windows-Steuerelementbibliothek) sowie das Kompilieren des Projekts in eine Assembly veranschaulicht. Das Steuerelement kann dann von einer MFC-Anwendung verwendet werden, die Klassen verwendet, die von CView Class und CWinFormsView Class abgeleitet sind.
Informationen zum Erstellen eines Windows Forms-Benutzersteuerelements und zum Erstellen einer Steuerelementklassenbibliothek finden Sie unter How to: Author User Controls.
Hinweis
In einigen Fällen verhalten sich Windows Forms-Steuerelemente, z. B. ein Datenblattsteuerelement eines Drittanbieters, nicht zuverlässig, wenn sie in einer MFC-Anwendung gehostet werden. Um dies zu umgehen, wird empfohlen, ein Windows Forms-Benutzersteuerelement in der MFC-Anwendung und das Datenblattsteuerelement des Drittanbieters innerhalb des Benutzersteuerelements zu platzieren.
Bei diesem Verfahren wird davon ausgegangen, dass Sie ein Windows Forms Controls Library-Projekt namens "WindowsFormsControlLibrary1" gemäß der Prozedur in "How to: Create the User Control and Host in a Dialog Box" erstellt haben.
So erstellen Sie die MFC-Hostanwendung
Erstellen Sie ein MFC-Anwendungsprojekt.
Wählen Sie im Menü "Datei " die Option "Neu" aus, und klicken Sie dann auf "Projekt". Wählen Sie im Ordner "Visual C++" die Option "MFC-Anwendung" aus.
Geben Sie im Feld "Name" die Einstellung "Lösung hinzufügen" ein, und ändern Sie sie in "Lösung hinzufügen
MFC02
". Klicken Sie auf OK.Übernehmen Sie im MFC-Anwendungs-Assistenten alle Standardwerte, und klicken Sie dann auf "Fertig stellen". Dies erstellt eine MFC-Anwendung mit einem MDI (Multiple Document Interface).
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 wählen Sie "Eigenschaften" im Kontextmenü aus. Das Dialogfeld "Eigenschaftenseiten " wird angezeigt.Wählen Sie 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 klicken Sie auf den Knoten "Allgemein". Legen Sie das Debuginformationsformat auf die Programmdatenbank (/Zi) fest.
Klicken Sie auf den Knoten " Codegenerierung ". 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 Ihre Änderungen anzuwenden.
Fügen Sie in pch.h (stdafx.h in Visual Studio 2017 und früher) die folgende Zeile hinzu:
#using <System.Windows.Forms.dll>
Fügen Sie dem .NET-Steuerelement einen Verweis hinzu.
Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf den
MFC02
Projektknoten, und wählen Sie "Hinzufügen", "Verweise" aus. 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. Außerdem kopiert es WindowsFormsControlLibrary1.dll in dasMFC02
Projektverzeichnis, sodass das Programm ausgeführt wird.Suchen Sie in stdafx.h folgende Zeile:
#endif // _AFX_NO_AFXCMN_SUPPORT
Fügen Sie davor folgende Zeilen ein:
#include <afxwinforms.h> // MFC Windows Forms support
Ändern Sie die Ansichtsklasse so, dass sie von CWinFormsView erbt.
Ersetzen Sie in MFC02View.h CView durch CWinFormsView , sodass der Code wie folgt angezeigt wird:
class CMFC02View : public CWinFormsView { };
Wenn Sie Ihrer MDI-Anwendung zusätzliche Ansichten hinzufügen möchten, müssen Sie für jede von Ihnen erstellte Ansicht CWinApp::AddDocTemplate aufrufen.
Ändern Sie in der Datei MFC02View.cpp im IMPLEMENT_DYNCREATE-Makro und in der Meldungszuordnung CView in CWinFormsView um, und ersetzen Sie den vorhandenen leeren Konstruktor durch den folgenden:
IMPLEMENT_DYNCREATE(CMFC02View, CWinFormsView) CMFC02View::CMFC02View(): CWinFormsView(WindowsFormsControlLibrary1::UserControl1::typeid) { } BEGIN_MESSAGE_MAP(CMFC02View, CWinFormsView) //leave existing body as is END_MESSAGE_MAP()
Erstellen Sie das Projekt, und führen Sie es aus.
Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf MFC02, und wählen Sie "Als Startprojekt festlegen" aus.
Klicken Sie im Menü Erstellen auf Projektmappe erstellen.
Klicken Sie im Menü "Debuggen " auf "Start" ohne Debugging.
Siehe auch
Hosten eines Windows Forms-Benutzersteuerelements als MFC-Ansicht