Procedura: aggiungere il routing dei comandi al controllo Windows Form
Aggiornamento: novembre 2007
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'IView Interface.
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 8\VC\atlmfc\lib.
Aprire UserControl1.Designer.cs e aggiungere la seguente istruzione using:
using namespace 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("Got FILE_NEW"); }
Aprire l'applicazione MFC creata in Procedura: creare il controllo utente e inserirlo in una finestra di dialogo.
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. Salvare il file.
In Esplora soluzioni aprire il file Resource.h, copiare il valore relativo alla voce di menu appena aggiunta, quindi incollare tale valore come primo parametro alla chiamata di m_CmdSrc.AddCommandHandler nel metodo Initialize del progetto C#.
Generare ed eseguire il progetto.
Scegliere Genera soluzione dal menu Genera.
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