Comment : ajouter le routage des commandes au contrôle Windows Forms

CWinFormsView achemine les commandes et met à jour les messages de l’interface utilisateur vers le contrôle utilisateur pour lui permettre de gérer les commandes MFC (par exemple, les éléments de menu frame et les boutons de barre d’outils).

Le contrôle utilisateur utilise ICommandTarget ::Initialize pour stocker une référence à l’objet source de commande dans m_CmdSrcl’exemple suivant. Pour utiliser ICommandTarget , vous devez ajouter une référence à mfcmifc80.dll.

CWinFormsView gère plusieurs notifications d’affichage MFC courantes en les transférant au contrôle utilisateur géré. Ces notifications incluent les méthodes OnInitialUpdate, OnUpdate et OnActivateView .

Cette rubrique suppose que vous avez déjà terminé comment : créer le contrôle utilisateur et l’hôte dans une boîte de dialogue et comment : créer le contrôle utilisateur et l’affichage MDI hôte.

Pour créer l’application hôte MFC

  1. Ouvrez la bibliothèque de contrôle Windows Forms que vous avez créée dans How to : Create the User Control and Host in a Dialog Box.

  2. Ajoutez une référence à mfcmifc80.dll, que vous pouvez faire en cliquant avec le bouton droit sur le nœud du projet dans Explorateur de solutions, en sélectionnant Ajouter, référencer, puis en accédant à Microsoft Visual Studio 10.0\VC\atlmfc\lib.

  3. Ouvrez UserControl1.Designer.cs et ajoutez l’instruction using suivante :

    using Microsoft.VisualC.MFC;
    
  4. En outre, dans UserControl1.Designer.cs, modifiez cette ligne :

    partial class UserControl1
    

    par ceci :

    partial class UserControl1 : System.Windows.Forms.UserControl, ICommandTarget
    
  5. Ajoutez-le comme première ligne de la définition de classe pour UserControl1:

    private ICommandSource m_CmdSrc;
    
  6. Ajoutez les définitions de méthode suivantes à UserControl1 (nous allons créer l’ID du contrôle MFC à l’étape suivante) :

    public void Initialize (ICommandSource cmdSrc)
    {
       m_CmdSrc = cmdSrc;
       // need ID of control in MFC dialog and callback function
       m_CmdSrc.AddCommandHandler(32771, new CommandHandler (singleMenuHandler));
    }
    
    private void singleMenuHandler (uint cmdUI)
    {
       // User command handler code
       System.Windows.Forms.MessageBox.Show("Custom menu option was clicked.");
    }
    
  7. Ouvrez l’application MFC que vous avez créée dans How to : Create the User Control and Host MDI View.

  8. Ajoutez une option de menu qui appellera singleMenuHandler.

    Accédez à l’affichage des ressources (Ctrl+Maj+E), développez le dossier Menu , puis double-cliquez sur IDR_MFC02TYPE. Cela affiche l’éditeur de menu.

    Ajoutez une option de menu en bas du menu Affichage . Notez l’ID de l’option de menu dans la fenêtre Propriétés . Enregistrez le fichier.

    Dans Explorateur de solutions, ouvrez le fichier Resource.h, copiez la valeur d’ID de l’option de menu que vous venez d’ajouter, puis collez cette valeur en tant que premier paramètre de l’appel dans la m_CmdSrc.AddCommandHandler méthode du Initialize projet C# (en 32771 remplaçant si nécessaire).

  9. Générez et exécutez le projet.

    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.

    Sélectionnez l’option de menu que vous avez ajoutée. Notez que la méthode dans .dll est appelée.

Voir aussi

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