Procedura: aggiungere il routing dei comandi al controllo Windows Form
CWinFormsView invia comandi e messaggi dell'interfaccia utente del comando di aggiornamento al controllo utente per consentire la gestione dei comandi MFC, ad esempio le voci dei menu della cornice e i pulsanti della barra degli strumenti.
Il controllo utente utilizza ICommandTarget::Initialize per memorizzare un riferimento nell'oggetto origine del comando in m_CmdSrc, come illustrato nell'esempio riportato di seguito.Per utilizzare ICommandTarget, è necessario aggiungere un riferimento a mfcmifc80.dll.
CWinFormsView gestisce diverse delle notifiche di visualizzazione MFC comuni inoltrandole al controllo utente gestito.Tali notifiche includono i metodi OnInitialUpdate, OnUpdate e OnActivateView dell'Interfaccia di IView.
In questo argomento si presuppone che in precedenza siano state completate le procedure Procedura: creare il controllo utente e inserirlo in una finestra di dialogo e Procedura: creare il controllo utente e inserirlo nella visualizzazione MDI.
Per creare l'applicazione host MFC
Aprire la libreria di controlli Windows Form creata in Procedura: creare il controllo utente e inserirlo in una finestra di dialogo.
Aggiungere un riferimento a mfcmifc80.dll, operazione che è possibile effettuare facendo clic con il pulsante destro del mouse sul nodo del progetto in Esplora soluzioni, selezionando Aggiungi riferimento e individuando Microsoft Visual Studio 10.0\VC\atlmfc\lib.
Aprire UserControl1.Designer.cs e aggiungere la seguente istruzione using:
using Microsoft.VisualC.MFC;
Inoltre in UserControl1.Designer.cs modificare la seguente riga:
partial class UserControl1
in:
partial class UserControl1 : System.Windows.Forms.UserControl, ICommandTarget
Aggiungere la seguente riga come la prima della definizione di classe per UserControl1:
private ICommandSource m_CmdSrc;
Aggiungere le seguenti definizioni di metodo a UserControl1 (nel prossimo passaggio verrà creato l'ID del controllo MFC):
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."); }
Aprire l'applicazione MFC creata in Procedura: creare il controllo utente e inserirlo nella visualizzazione MDI.
Aggiungere una voce di menu che richiami singleMenuHandler.
Passare a Visualizzazione risorse (CTRL+MAIUSC+E), espandere la cartella Menu, quindi fare doppio clic su IDR_MFC02TYPE.Verrà visualizzato l'editor dei menu.
Aggiungere un'opzione di menu nella parte inferiore del menu Visualizza.Annotare l'ID dell'opzione di menu nel finestra Proprietà.Salvare il file.
In Esplora soluzioni aprire il file Resource.h, copiare il valore relativo all'ID della voce di menu appena aggiunta, quindi incollare tale valore come primo parametro alla chiamata di m_CmdSrc.AddCommandHandler nel metodo Initialize del progetto C# (sostituendo 32771 se necessario).
Compilare ed eseguire il progetto.
Scegliere Compila soluzione dal menu Compila.
Scegliere Avvia senza eseguire debug dal menu Debug.
Selezionare l'opzione di menu aggiunta.Verrà chiamato il metodo nel file DLL.
Vedere anche
Riferimenti
Altre risorse
Hosting di un controllo utente Windows Form come visualizzazione MFC