Udostępnij za pośrednictwem


Porady: dodawanie routingu poleceń do formantu interfejsu Windows Forms

CWinFormsView kieruje polecenia i komunikaty aktualizacji interfejsu użytkownika do formantu użytkownika, aby zezwolić na obsługę jego poleceń MFC (na przykład ramek elementów menu i przycisków na pasku narzędzi).

Formant użytkownika używa ICommandTarget::Initialize do przechowywania odwołania do obiektu źródła polecenia w m_CmdSrc, jak pokazano w następującym przykładzie.Aby użyć ICommandTarget należy dodać odwołanie do mfcmifc80.dll.

CWinFormsView obsługuje wiele wspólnych powiadomień widoku MFC, przekazując je do zarządzanego formantu użytkownika.Te powiadomienia obejmują metody OnInitialUpdate, OnUpdate i OnActivateViewInterfejs IView.

W tym temacie założono, że została już ukończona Porady: tworzenie formantu użytkownika i hosta w oknie dialogowym i Porady: tworzenie formantu użytkownika i hostowanie widoku MDI.

Aby utworzyć aplikację hosta MFC

  1. Otwórz bibliotekę kontrolek formularzy systemu Windows utworzoną w procedurze Porady: tworzenie formantu użytkownika i hosta w oknie dialogowym.

  2. Dodaj odwołanie do mfcmifc80.dll, co można zrobić, klikając prawym przyciskiem myszy węzeł projektu w oknie Eksplorator rozwiązań, wybierając Dodaj, Odwołanie, a następnie przechodząc do 10.0\VC\atlmfc\lib w programie Microsoft Visual Studio.

  3. Otwórz plik UserControl1.Designer.cs i dodaj następującą instrukcję using:

    using Microsoft.VisualC.MFC;
    
  4. Ponadto w UserControl1.Designer.cs zmień ten wiersz:

    partial class UserControl1
    

    do tego:

    partial class UserControl1 : System.Windows.Forms.UserControl, ICommandTarget
    
  5. Dodaj to jako pierwszy wiersz w definicji klasy dla UserControl1:

    private ICommandSource m_CmdSrc;
    
  6. Dodaj następujące definicje metody do UserControl1 (w następnym kroku zostanie utworzony identyfikator formantu 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. Otwórz aplikację MFC utworzoną w procedurze Porady: tworzenie formantu użytkownika i hostowanie widoku MDI.

  8. Dodaj opcję menu, którą będzie wywoływać singleMenuHandler.

    Przejdź do okna Widok zasobów (Ctrl+Shift+E), rozwiń folder Menu, a następnie kliknij dwukrotnie pozycję IDR_MFC02TYPE.Wyświetla to Edytor menu.

    Dodaj opcję menu u dołu menu Widok.Zwróć uwagę na identyfikator opcji menu w oknie Właściwości.Zapisz plik.

    W Eksploratorze rozwiązań otwórz plik Resource.h, skopiuj wartość identyfikatora dla opcji menu dodanej przed chwilą, i wklej tę wartość jako pierwszy parametr do wywołania m_CmdSrc.AddCommandHandler w metodzie Initialize w projekcie w języku C# (zastępując wartość 32771 w razie potrzeby).

  9. Skompiluj i uruchom projekt.

    W menu Kompilacja kliknij Kompiluj rozwiązanie.

    Na pasku menu kliknij Debugowanie, Rozpocznij bez debugowania.

    Wybierz opcję menu, którą dodałeś.Należy zauważyć, że wywoływana jest metoda w pliku .dll.

Zobacz też

Informacje

Interfejs ICommandSource

Interfejs ICommandTarget

CommandHandler — Obiekt delegowany

Inne zasoby

Hostowanie formantu użytkownika interfejsu Windows Forms jako widoku MFC