Gewusst wie: Hinzufügen von Befehlsrouting zum Windows Forms-Steuerelement

Durch CWinFormsView werden Befehle und Meldungen in der Benutzeroberfläche für Aktualisierungsbefehle an das Benutzersteuerelement weitergeleitet. Dadurch ist das Steuerelement in der Lage, MFC-Befehle zu verarbeiten (z. B. Optionen in Framemenüs und Schaltflächen für die Symbolleiste).

Das Benutzersteuerelement verwendet ICommandTarget::Initialize, um in m_CmdSrc einen Verweis auf das Befehlsquellobjekt zu speichern. Dies wird im folgenden Beispiel erläutert.Um ICommandTarget zu verwenden, müssen Sie einen Verweis auf mfcmifc80.dll hinzufügen.

Durch CWinFormsView werden einige der allgemeinen MFC-Anzeigenbenachrichtigungen verarbeitet, indem diese an das verwaltete Benutzersteuerelement weitergeleitet werden.Diese Benachrichtigungen schließen die OnInitialUpdate-Methode, die OnUpdate-Methode und die OnActivateView-Methode der IView-Schnittstelle ein.

In diesem Thema wird davon ausgegangen, dass Sie zuvor die Themen Gewusst wie: Erstellen des Benutzersteuerelements und des Hosts in einem Dialogfeld und Gewusst wie: Erstellen des Benutzersteuerelements und Hosten der MDI-Ansicht gelesen haben.

So erstellen Sie die MFC-Hostanwendung

  1. Öffnen Sie die Windows Forms-Steuerelementbibliothek, die Sie in Gewusst wie: Erstellen des Benutzersteuerelements und des Hosts in einem Dialogfeld erstellt haben.

  2. Fügen Sie einen Verweis auf mfcmifc80.dll hinzu, indem Sie z. B. im Projektmappen-Explorer mit der rechten Maustaste auf den Projektknoten klicken, Verweis hinzufügen auswählen und dann zu Microsoft Visual Studio 10.0\VC\atlmfc\lib navigieren.

  3. Öffnen Sie UserControl1.Designer.cs, und fügen Sie die folgende using-Anweisung hinzu:

    using Microsoft.VisualC.MFC;
    
  4. Ändern Sie außerdem in UserControl1.Designer.cs die folgende Zeile:

    partial class UserControl1
    

    in:

    partial class UserControl1 : System.Windows.Forms.UserControl, ICommandTarget
    
  5. Fügen Sie diese Zeile als erste Zeile der Klassendefinition für UserControl1 hinzu:

    private ICommandSource m_CmdSrc;
    
  6. Fügen Sie die folgenden Methodendefinitionen zu UserControl1 hinzu (die ID des MFC-Steuerelements wird im nächsten Schritt erstellt):

    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. Öffnen Sie die MFC-Anwendung, die Sie in Gewusst wie: Erstellen des Benutzersteuerelements und Hosten der MDI-Ansicht erstellt haben.

  8. Fügen Sie eine Menüoption hinzu, die singleMenuHandler aufruft.

    Wechseln Sie in die Ressourcenansicht (STRG+UMSCHALT+E), erweitern Sie den Ordner Menü, und doppelklicken Sie dann auf IDR_MFC02TYPE.Der Menü-Editor wird angezeigt.

    Fügen Sie unten im Menü Ansicht eine Menüoption hinzu.Beachten Sie die ID der Menüoption im Fenster Eigenschaften.Speichern Sie die Datei.

    Öffnen Sie im Projektmappen-Explorer die Datei "Resource.h", kopieren Sie den ID-Wert für die soeben hinzugefügte Menüoption, und fügen Sie den Wert als ersten Parameter in den m_CmdSrc.AddCommandHandler-Aufruf der Initialize-Methode des C#-Projekts ein (ersetzen Sie dabei ggf. 32771).

  9. Erstellen Sie das Projekt, und führen Sie es aus.

    Klicken Sie im Menü Erstellen auf Projektmappe erstellen.

    Klicken Sie im Menü Debuggen auf Starten ohne Debuggen.

    Wählen Sie die hinzugefügte Menüoption aus.Beachten Sie, dass die Methode in der DLL aufgerufen wird.

Siehe auch

Referenz

ICommandSource-Schnittstelle

ICommandTarget-Schnittstelle

CommandHandler-Delegat

Weitere Ressourcen

Hosten eines Windows Forms-Benutzersteuerelements als MFC-Ansicht