Comment : créer le contrôle utilisateur et héberger l'affichage MDI
Les étapes suivantes indiquent comment créer un contrôle utilisateur .NET Framework, comment le créer dans une bibliothèque de classes de contrôle (en particulier un projet de bibliothèque de contrôles Windows), puis compiler le projet dans un assembly.Le contrôle peut ensuite être consommé à partir d'une application MFC qui utilise des classes dérivées de la CView, classe et de la CWinFormsView, classe.
Pour plus d'informations sur la création d'un contrôle utilisateur Windows Forms et la création d'une bibliothèque de classes de contrôle, voyez How to: Author User Controls.
[!REMARQUE]
Dans certains cas, des contrôles Windows Forms (comme un contrôle Grid tiers) peuvent ne pas se comporter de façon fiable au sein de l'application MFC qui les héberge.Une solution de contournement conseillée sera de placer un contrôle utilisateur Windows Forms dans l'application MFC et de placer le contrôle Grid tiers à l'intérieur du contrôle utilisateur.
Cette procédure suppose que vous avez créé un projet de bibliothèque de contrôles Windows Forms nommé WindowsFormsControlLibrary1, selon la procédure exposée dans Comment : créer le contrôle utilisateur et l'héberger dans une boîte de dialogue.
Pour créer l'application MFC hôte
Créez un projet d'application MFC.
Dans le menu Fichier, sélectionnez Nouveau, puis cliquez sur Projet.Dans le dossier Visual C++, sélectionnez Application MFC.
Dans la zone Nom , entrez MFC02 et modifiez Solution affectant à Ajouter à la solution.cliquez sur OK.
Dans l'Assistant Application MFC, acceptez toutes les valeurs par défaut, puis cliquez sur Terminer.Cela crée une application MFC avec une interface multidocument.
Configurez le projet pour la prise en charge du Common Language Runtime (CLR).
Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le nœud du projet MFC01, puis sélectionnez Propriétés dans le menu contextuel.La boîte de dialogue Pages de propriétés s'affiche.
Sous Propriétés de configuration, sélectionnez Général.Sous la section Paramètres par défaut du projet, attribuez à Prise en charge du Common Language Runtime la valeur Prise en charge du Common Language Runtime (/clr).
Sous Propriétés de configuration, développez C/C++, puis cliquez sur le nœud Général.Affectez à Format des informations de débogage la valeur Base de données du programme (/Zi).
Cliquez sur le nœud Génération de code.Affectez à Activation de la régénération minimale la valeur Non (/Gm-).Attribuez également à Vérifications de base à l'exécution la valeur Par défaut.
Cliquez sur OK pour enregistrer les modifications apportées.
Dans stdafx.h, ajoutez la ligne suivante :
#using <System.Windows.Forms.dll>
Ajoutez une référence au contrôle .NET.
Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le nœud du projet MFC02 et sélectionnez Références.Dans Page de propriétés, cliquez sur Ajouter une nouvelle référence, sélectionnez WindowsFormsControlLibrary1 (sous l'onglet Projets) et cliquez sur OK.Cela ajoute une référence sous la forme d'une option du compilateur /FU afin que le programme exécute la compilation ; cela copie également WindowsFormsControlLibrary1.dll dans le répertoire du projet MFC02 afin que le programme s'exécute.
Dans stdafx.h, recherchez la ligne suivante :
#endif // _AFX_NO_AFXCMN_SUPPORT
Ajoutez ces lignes au-dessus :
#include <afxwinforms.h> // MFC Windows Forms support
Modifiez la classe d'affichage afin qu'elle hérite de CWinFormsView.
Dans MFC02View.h, remplacez CView par CWinFormsView afin que le code apparaisse comme ceci :
class CMFC02View : public CWinFormsView { };
Si vous souhaitez ajouter des affichages supplémentaires à votre application MDI, vous devez appeler CWinApp::AddDocTemplate pour chaque affichage que vous créez.
Modifiez le fichier MFC02View.cpp pour transformer CView en CWinFormsView dans la macro IMPLEMENT_DYNCREATE et la table des messages, puis remplacez le constructeur vide existant par le constructeur indiqué dessous :
IMPLEMENT_DYNCREATE(CMFC02View, CWinFormsView) CMFC02View::CMFC02View(): CWinFormsView(WindowsFormsControlLibrary1::UserControl1::typeid) { } BEGIN_MESSAGE_MAP(CMFC02View, CWinFormsView) //leave existing body as is END_MESSAGE_MAP()
Générez et exécutez le projet.
Dans l'Explorateur de solutions, cliquez avec le bouton droit sur MFC02, puis sélectionnez Définir comme projet de démarrage.
Dans le menu Générer, cliquez sur Générer la solution.
Dans le menu Déboguer, cliquez sur Exécuter sans débogage.
Voir aussi
Autres ressources
Hébergement d'un contrôle utilisateur Windows Forms en tant que vue MFC