Comment : ajouter le routage des commandes au contrôle Windows Forms
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 Interface d'IView.
Cette rubrique part du principe que vous avez précédemment effectué les étapes Comment : créer le contrôle utilisateur et l'héberger dans une boîte de dialogue et Comment : créer le contrôle utilisateur et héberger l'affichage MDI.
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, Référence, et en accédant à Microsoft Visual Studio 10.0\VC\atlmfc\lib.
Ouvrez UserControl1.Designer.cs et ajoutez l'instruction Using suivante :
using 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("Custom menu option was clicked."); }
Ouvrez l'application MFC que vous avez créée dans Comment : créer le contrôle utilisateur et héberger l'affichage MDI.
Ajoutez une option de menu qui appelle singleMenuHandler.
Accédez à Affichage des ressources (Ctrl+Maj+E), développez le dossier Menu, puis double-cliquez IDR_MFC02TYPE. L'éditeur de menus s'affiche.
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 l'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 comme premier paramètre de l'appel m_CmdSrc.AddCommandHandler dans la méthode Initialize du projet C# (en remplaçant 32771 si nécessaire).
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 Forms en tant que vue MFC