Comment : créer le contrôle utilisateur et l'héberger dans une boîte de dialogue
Les étapes décrites dans cet article supposent que vous créez un projet MFC (CDialog Class) microsoft Foundation Classes (MFC), mais vous pouvez également ajouter la prise en charge d’un contrôle Windows Forms à une boîte de dialogue MFC existante.
Pour créer le contrôle utilisateur .NET
Créez un projet de bibliothèque de contrôle Windows Forms Visual C# nommé
WindowsFormsControlLibrary1
.Dans le menu Fichier, cliquez sur Nouveau, puis cliquez sur Projet. Dans le dossier Visual C# , sélectionnez Bibliothèque de contrôles Windows Forms.
Acceptez le nom du
WindowsFormsControlLibrary1
projet en cliquant sur OK.Par défaut, le nom du contrôle .NET sera
UserControl1
.Ajouter des contrôles enfants à
UserControl1
.Dans la boîte à outils, ouvrez la liste Tous les Windows Forms . Faites glisser un contrôle Bouton vers l’aire de
UserControl1
conception.Ajoutez également un contrôle TextBox .
Dans Explorateur de solutions, double-cliquez sur UserControl1.Designer.cs pour l’ouvrir pour modification. Modifiez les déclarations de la zone de
private
texte et du bouton verspublic
.Créez le projet.
Dans le menu Générer, cliquez sur Générer la solution.
Pour créer l’application hôte MFC
Créez un projet d’application MFC.
Dans le menu Fichier, cliquez sur Nouveau, puis cliquez sur Projet. Dans le dossier Visual C++ , sélectionnez Application MFC.
Dans le champ Nom, saisissez
MFC01
. Modifiez le paramètre Solution pour ajouter à la solution. Cliquez sur OK.Dans l’Assistant Application MFC, pour Type d’application, sélectionnez Boîte de dialogue basée sur. Acceptez les paramètres par défaut restants, puis cliquez sur Terminer. Cela crée une application MFC qui a une boîte de dialogue MFC.
Ajoutez un contrôle d’espace réservé à la boîte de dialogue MFC.
Dans le menu Affichage , cliquez sur Affichage des ressources. Dans l’affichage des ressources, développez le dossier boîte de dialogue et double-cliquez
IDD_MFC01_DIALOG
. La ressource de boîte de dialogue s’affiche dans l’Éditeur de ressources.Dans la boîte à outils, ouvrez la liste de l’éditeur de boîte de dialogue. Faites glisser un contrôle Texte statique vers la ressource de boîte de dialogue. Le contrôle Texte statique sert d’espace réservé pour le contrôle Windows Forms .NET. Redimensionnez-le à environ la taille du contrôle Windows Forms.
Dans la fenêtre Propriétés, remplacez l’ID du contrôle
IDC_CTRL1
Texte statique et remplacez la propriété TabStop par True.Configurez le projet pour la prise en charge du Common Language Runtime (CLR).
Dans Explorateur de solutions, cliquez avec le bouton droit sur le nœud du projet MFC01, puis cliquez sur Propriétés.
Dans la boîte de dialogue Pages de propriétés, sous Propriétés de configuration, sélectionnez Général. Dans la section Project Defaults, définissez la prise en charge du Common Language Runtime sur Common Language Runtime Support (/clr).
Sous Propriétés de configuration, développez C/C++ et sélectionnez le nœud Général . Définissez le format des informations de débogage sur Program Database (/Zi).
Sélectionnez le nœud Génération de code. Définissez Activer la reconstruction minimale sur Non (/Gm-). Définissez également Les vérifications du runtime de base sur Par défaut.
Cliquez sur OK pour appliquer les modifications.
Ajoutez une référence au contrôle .NET.
Dans Explorateur de solutions, cliquez avec le bouton droit sur le nœud du projet MFC01, puis cliquez sur Ajouter, Références. Dans la page de propriétés, cliquez sur Ajouter une nouvelle référence, sélectionnez WindowsFormsControlLibrary1 (sous l’onglet Projets ), puis cliquez sur OK. Cela ajoute une référence sous la forme d’une option de compilateur /FU afin que le programme compile. Il place également une copie de WindowsFormsControlLibrary1.dll dans le dossier de projet \MFC01\ afin que le programme s’exécute.
Dans Stdafx.h, recherchez cette ligne :
#endif // _AFX_NO_AFXCMN_SUPPORT
Au-dessus, ajoutez ces lignes :
#include <afxwinforms.h> // MFC Windows Forms support
Ajoutez du code pour créer le contrôle managé.
Tout d’abord, déclarez le contrôle managé. Dans MFC01Dlg.h, accédez à la déclaration de la classe de dialogue et ajoutez un membre de données pour le contrôle utilisateur dans l’étendue protégée, comme suit.
class CMFC01Dlg : public CDialog { // ... // Data member for the .NET User Control: CWinFormsControl<WindowsFormsControlLibrary1::UserControl1> m_ctrl1;
Ensuite, fournissez une implémentation pour le contrôle managé. Dans MFC01Dlg.cpp, dans la substitution de
CMFC01Dlg::DoDataExchange
dialogue générée par l’Assistant Application MFC (et nonCAboutDlg::DoDataExchange
dans le même fichier), ajoutez le code suivant pour créer le contrôle managé et l’associer à l’espace réservé statique IDC_CTRL1.void CMFC01Dlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_ManagedControl(pDX, IDC_CTRL1, m_ctrl1); }
Générez et exécutez le projet.
Dans Explorateur de solutions, cliquez avec le bouton droit sur MFC01, puis cliquez sur Définir comme projet de démarrage.
Dans le menu Générer, cliquez sur Générer la solution.
Dans le menu Débogage , cliquez sur Démarrer sans débogage. La boîte de dialogue MFC doit afficher le contrôle Windows Forms.
Voir aussi
Hébergement d’un contrôle utilisateur Windows Form dans une boîte de dialogue MFC