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

  1. Aprire la libreria di controlli Windows Form creata in Procedura: creare il controllo utente e inserirlo in una finestra di dialogo.

  2. 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.

  3. Aprire UserControl1.Designer.cs e aggiungere la seguente istruzione using:

    using Microsoft.VisualC.MFC;
    
  4. Inoltre in UserControl1.Designer.cs modificare la seguente riga:

    partial class UserControl1
    

    in:

    partial class UserControl1 : System.Windows.Forms.UserControl, ICommandTarget
    
  5. Aggiungere la seguente riga come la prima della definizione di classe per UserControl1:

    private ICommandSource m_CmdSrc;
    
  6. 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.");
    }
    
  7. Aprire l'applicazione MFC creata in Procedura: creare il controllo utente e inserirlo nella visualizzazione MDI.

  8. 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).

  9. 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

Interfaccia di ICommandSource

Interfaccia di ICommandTarget

Delegato di CommandHandler

Altre risorse

Hosting di un controllo utente Windows Form come visualizzazione MFC