Procedura: aggiungere il routing dei comandi al controllo Windows Form

CWinFormsView instrada i comandi e i messaggi dell'interfaccia utente dei comandi di aggiornamento al controllo utente per consentirgli di gestire i comandi MFC( ad esempio, voci di menu cornice e pulsanti della barra degli strumenti).

Il controllo utente usa ICommandTarget::Initialize per archiviare un riferimento all'oggetto origine del comando in m_CmdSrc, come illustrato nell'esempio seguente. Per usare ICommandTarget è necessario aggiungere un riferimento a mfcmifc80.dll.

CWinFormsView gestisce diverse notifiche di visualizzazione MFC comuni inoltrandole al controllo utente gestito. Queste notifiche includono i metodi OnInitialUpdate, OnUpdate e OnActivateView .

In questo argomento si presuppone che sia stata completata in precedenza Procedura: Creare il controllo utente e l'host in una finestra di dialogo e Procedura: Creare il controllo utente e la visualizzazione MDI host.

Per creare l'applicazione host MFC

  1. Aprire Windows Form Libreria di controlli creata in Procedura: Creare il controllo utente e l'host in una finestra di dialogo.

  2. Aggiungere un riferimento a mfcmifc80.dll, che è possibile fare facendo clic con il pulsante destro del mouse sul nodo del progetto in Esplora soluzioni, scegliendo Aggiungi, Riferimento e quindi passando a Microsoft Visual Studio 10.0\VC\atlmfc\lib.

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

    using Microsoft.VisualC.MFC;
    
  4. Inoltre, in UserControl1.Designer.cs, modificare questa riga:

    partial class UserControl1
    

    in questa:

    partial class UserControl1 : System.Windows.Forms.UserControl, ICommandTarget
    
  5. Aggiungerlo come prima riga della definizione della classe per UserControl1:

    private ICommandSource m_CmdSrc;
    
  6. Aggiungere le definizioni di metodo seguenti a UserControl1 (verrà creato l'ID del controllo MFC nel passaggio successivo):

    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 la visualizzazione MDI host.

  8. Aggiungere un'opzione di menu che richiamerà singleMenuHandler.

    Passare a Visualizzazione risorse (CTRL+MAIUSC+E), espandere la cartella Menu e quindi fare doppio clic su IDR_MFC02TYPE. Verrà visualizzato l'editor di menu.

    Aggiungere un'opzione di menu nella parte inferiore del menu Visualizza . Si noti l'ID dell'opzione di menu nella finestra Proprietà . Salvare il file.

    In Esplora soluzioni aprire il file Resource.h, copiare il valore ID per l'opzione di menu appena aggiunta e incollare tale valore come primo parametro alla m_CmdSrc.AddCommandHandler chiamata nel metodo del Initialize progetto C# (sostituendo 32771 se necessario).

  9. Compilare ed eseguire il progetto.

    Nel menu Compila scegliere Compila soluzione.

    Scegliere Avvia senza eseguire il debug dal menu Debug.

    Selezionare l'opzione di menu aggiunta. Si noti che viene chiamato il metodo nel .dll.

Vedi anche

Hosting di un controllo utente Windows Form come visualizzazione MFC
Interfaccia ICommandSource
Interfaccia ICommandTarget