Comment : ajouter le routage des commandes au contrôle Windows Forms
Mise à jour : novembre 2007
CWinFormsView route les commandes et les messages d'interface utilisateur de commande de mise à jour destinés à l'utilisateur pour lui permettre de gérer les commandes MFC (par exemple, éléments de menu de frame et boutons de barre d'outils).
Le contrôle utilisateur utilise ICommandTarget::Initialize pour stocker une référence à l'objet source de la commande dans m_CmdSrc, comme indiqué dans l'exemple suivant. Pour utiliser ICommandTarget, vous devez ajouter une référence à mfcmifc80.dll.
CWinFormsView gère plusieurs des notifications d'affichage MFC communes en les envoyant au contrôle utilisateur managé. Ces notifications incluent les méthodes OnInitialUpdate, OnUpdate et OnActivateView de IView Interface.
Pour créer l'application MFC hôte
Ouvrez la bibliothèque de contrôles Windows Forms que vous avez créée dans Comment : créer le contrôle utilisateur et l'héberger dans une boîte de dialogue.
Ajoutez une référence à mfcmifc80.dll en cliquant avec le bouton droit sur le nœud du projet dans Explorateur de solutions, en sélectionnant Ajouter une référence et en accédant à Microsoft Visual Studio 8\VC\atlmfc\lib.
Ouvrez UserControl1.Designer.cs et ajoutez l'instruction Using suivante :
using namespace Microsoft::VisualC::MFC;
Dans UserControl1.Designer.cs, remplacez également la ligne suivante :
partial class UserControl1
par :
partial class UserControl1 : System.Windows.Forms.UserControl, ICommandTarget
Ajoutez-la comme la première ligne de la définition de classe pour UserControl1:
private ICommandSource m_CmdSrc;
Ajoutez les définitions de méthode suivantes à UserControl1 (nous créerons l'ID du contrôle MFC dans 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("Got FILE_NEW"); }
Ouvrez l'application MFC que vous avez créée dans Comment : créer le contrôle utilisateur et l'héberger dans une boîte de dialogue.
Ajoutez une option de menu qui appelle singleMenuHandler.
Accédez à Affichage des ressources (CTRL+MAJ+E), développez le dossier Menu, puis double-cliquez sur IDR_MFC02TYPE. L'éditeur de menus s'affiche.
Ajoutez une option de menu en bas du menu Affichage. Enregistrez le fichier.
Dans Explorateur de solutions, ouvrez le fichier Resource.h, copiez la valeur de l'option de menu que vous venez d'ajouter, puis collez cette valeur comme le premier paramètre de l'appel m_CmdSrc.AddCommandHandler dans la méthode Initialize du projet C#.
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éboguer, cliquez sur Exécuter sans débogage.
Sélectionnez l'option de menu que vous avez ajoutée. Notez que la méthode dans le .dll est appelée.
Voir aussi
Référence
Autres ressources
Hébergement d'un contrôle utilisateur Windows Form en tant que vue MFC