Partager via


Comment : créer le contrôle utilisateur et héberger l'affichage MDI

Les étapes suivantes montrent comment créer un contrôle utilisateur .NET Framework, créer le contrôle utilisateur dans une bibliothèque de classes de contrôle (en particulier, un projet 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 classe CView et de la classe CWinFormsView.

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, consultez Guide pratique pour créer des contrôles utilisateur.

Remarque

Dans certains cas, les contrôles Windows Forms, tels qu’un contrôle Grid tiers, peuvent ne pas se comporter de manière fiable lorsqu’ils sont hébergés dans une application MFC. Une solution de contournement recommandée consiste à placer un contrôle utilisateur Windows Forms dans l’application MFC et à 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, conformément à la procédure dans How to : Create the User Control and Host in a Dialog Box.

Pour créer l’application hôte MFC

  1. 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 et modifiez MFC02 le paramètre Solution pour 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 de document multiple.

  2. 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 MFC01 projet, 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. 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 cliquez sur le nœud Général . Définissez le format des informations de débogage sur Program Database (/Zi).

    Cliquez sur 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 vos modifications.

  3. Dans pch.h (stdafx.h dans Visual Studio 2017 et versions antérieures), ajoutez la ligne suivante :

    #using <System.Windows.Forms.dll>
    
  4. Ajoutez une référence au contrôle .NET.

    Dans Explorateur de solutions, cliquez avec le bouton droit sur le nœud du MFC02 projet, puis sélectionnez 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 copie également WindowsFormsControlLibrary1.dll dans le répertoire du MFC02 projet afin que le programme s’exécute.

  5. Dans stdafx.h, recherchez cette ligne :

    #endif // _AFX_NO_AFXCMN_SUPPORT
    

    Ajoutez ces lignes au-dessus de celle-ci :

    #include <afxwinforms.h>   // MFC Windows Forms support
    
  6. 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 suit :

    class CMFC02View : public CWinFormsView
    {
    };
    

    Si vous souhaitez ajouter des vues supplémentaires à votre application MDI, vous devez appeler CWinApp ::AddDocTemplate pour chaque affichage que vous créez.

  7. Modifiez le fichier MFC02View.cpp pour remplacer CView par CWinFormsView dans la macro et le mappage de messages IMPLEMENT_DYNCREATE, puis remplacez le constructeur vide existant par le constructeur indiqué ci-dessous :

    IMPLEMENT_DYNCREATE(CMFC02View, CWinFormsView)
    
    CMFC02View::CMFC02View(): CWinFormsView(WindowsFormsControlLibrary1::UserControl1::typeid)
    {
    }
    BEGIN_MESSAGE_MAP(CMFC02View, CWinFormsView)
    //leave existing body as is
    END_MESSAGE_MAP()
    
  8. Générez et exécutez le projet.

    Dans 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ébogage , cliquez sur Démarrer sans débogage.

Voir aussi

Hébergement d’un contrôle utilisateur Windows Forms en tant que vue MFC