Procedure: Commando-routering toevoegen aan het Windows Forms-besturingselement

CWinFormsView routeert opdrachten en update-command UI-berichten naar het gebruikersbesturingselement zodat deze MFC-opdrachten kan verwerken (bijvoorbeeld framemenu-items en werkbalkknoppen).

Het gebruikersbesturingselement maakt gebruik van ICommandTarget::Initialize om een verwijzing naar het opdrachtbronobject op m_CmdSrcte slaan, zoals wordt weergegeven in het volgende voorbeeld. Als u deze wilt gebruiken ICommandTarget , moet u een verwijzing naar mfcmifc80.dlltoevoegen.

CWinFormsView verwerkt verschillende algemene MFC-weergavemeldingen door ze door te sturen naar het beheerde gebruikersbeheer. Deze meldingen omvatten de methoden OnInitialUpdate, OnUpdate en OnActivateView .

In dit onderwerp wordt ervan uitgegaan dat u eerder de procedure Hoe: Het gebruikersbeheer en de host maken in een dialoogvenster en Hoe: De gebruikersbeheer en host MDI-weergave maken hebt voltooid.

Om de MFC-hosttoepassing te maken

  1. Open de Besturingselementbibliotheek voor Windows-formulieren die u hebt gemaakt in Procedures: Het gebruikersbeheer en de host maken in een dialoogvenster.

  2. Voeg een verwijzing toe naar mfcmifc80.dll, wat u kunt doen door met de rechtermuisknop op het projectknooppunt in Solution Explorer te klikken, Toevoegen, Verwijzing te selecteren en vervolgens naar Microsoft Visual Studio 10.0\VC\atlmfc\lib te bladeren.

  3. Open UserControl1.Designer.cs en voeg de volgende using-instructie toe:

    using Microsoft.VisualC.MFC;
    
  4. Wijzig in UserControl1.Designer.cs ook deze regel:

    partial class UserControl1
    

    naar dit:

    partial class UserControl1 : System.Windows.Forms.UserControl, ICommandTarget
    
  5. Voeg dit toe als de eerste regel van de klassedefinitie voor UserControl1:

    private ICommandSource m_CmdSrc;
    
  6. Voeg de volgende methodedefinities toe aan UserControl1 (in de volgende stap maken we de id van het MFC-besturingselement):

    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. Open de MFC-toepassing die u hebt gemaakt in Procedure: Het gebruikersbeheer en de MDI-hostweergave maken.

  8. Voeg een menuoptie toe waarmee singleMenuHandler wordt aangeroepen.

    Ga naar Resourceweergave (Ctrl+Shift+E), vouw de map Menu uit en dubbelklik op IDR_MFC02TYPE. Hiermee wordt de menueditor weergegeven.

    Voeg onderaan het menu Beeld een menuoptie toe. Let op de id van de menuoptie in het venster Eigenschappen . Sla het bestand op.

    Open in Solution Explorer het bestand Resource.h, kopieer de id-waarde voor de menuoptie die u zojuist hebt toegevoegd en plak deze waarde als de eerste parameter voor de m_CmdSrc.AddCommandHandler aanroep in de methode van Initialize het C#-project (vervang 32771 indien nodig).

  9. Bouw het project en voer het uit.

    Klik in het menu Bouwen op Oplossing bouwen.

    Klik in het menu Foutopsporing op Start zonder foutopsporing.

    Selecteer de menuoptie die u hebt toegevoegd. U ziet dat de methode in de .dll wordt aangeroepen.

Zie ook

Een Gebruikersbeheer voor Windows Forms hosten als een MFC-weergave
ICommandSource-interface
ICommandTarget Interface