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

CWinFormsView leitet Befehle und Aktualisierungsbefehls-UI-Nachrichten an das Benutzersteuerelement weiter, damit sie MFC-Befehle verarbeiten kann (z. B. Framemenüelemente und Symbolleistenschaltflächen).

Das Benutzersteuerelement verwendet ICommandTarget::Initialize zum Speichern eines Verweises auf das Befehlsquellobjekt in m_CmdSrc, wie im folgenden Beispiel gezeigt. 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. Zu diesen Benachrichtigungen gehören die Methoden OnInitialUpdate, OnUpdate und OnActivateView .

In diesem Thema wird davon ausgegangen, dass Sie zuvor "How to: Create the User Control and Host" in a Dialog Box and How to: Create the User Control and Host MDI View abgeschlossen haben.

So erstellen Sie die MFC-Hostanwendung

  1. Öffnen Sie die Windows Forms-Steuerelementbibliothek, die Sie in How to: Create the User Control and Host in a Dialog Box erstellt haben.

  2. Fügen Sie einen Verweis auf mfcmifc80.dll hinzu, den Sie ausführen können, indem Sie in Projektmappen-Explorer mit der rechten Maustaste auf den Projektknoten klicken, "Hinzufügen", "Verweis" 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 How to: Create the User Control and Host MDI View erstellt haben.

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

    Wechseln Sie zur Ressourcenansicht (STRG+UMSCHALT+E), erweitern Sie den Menüordner , 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 Eigenschaftenfenster . Speichern Sie die Datei .

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

  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 "Start" ohne Debugging.

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

Siehe auch

Hosten eines Windows Forms-Benutzersteuerelements als MFC-Ansicht
ICommandSource-Schnittstelle
ICommandTarget-Schnittstelle