Udostępnij za pośrednictwem


Porady: dodawanie routingu poleceń do formantu interfejsu Windows Forms

CWinFormsView kieruje polecenia i komunikaty interfejsu użytkownika update-command do kontrolki użytkownika, aby umożliwić mu obsługę poleceń MFC (na przykład elementów menu ramek i przycisków paska narzędzi).

Kontrolka użytkownika używa polecenia ICommandTarget::Initialize do przechowywania odwołania do obiektu źródłowego polecenia w m_CmdSrcprogramie , jak pokazano w poniższym przykładzie. Aby użyć ICommandTarget , należy dodać odwołanie do biblioteki mfcmifc80.dll.

CWinFormsView obsługuje kilka typowych powiadomień widoku MFC przez przekazanie ich do zarządzanej kontrolki użytkownika. Te powiadomienia obejmują metody OnInitialUpdate, OnUpdate i OnActivateView .

W tym temacie założono, że wcześniej ukończono instrukcje: Tworzenie kontrolki użytkownika i hosta w oknie dialogowym oraz Instrukcje: tworzenie kontrolki użytkownika i widoku MDI hosta.

Aby utworzyć aplikację hosta MFC

  1. Otwórz bibliotekę kontrolek formularzy systemu Windows utworzoną w temacie Instrukcje: tworzenie kontrolki użytkownika i hosta w oknie dialogowym.

  2. Dodaj odwołanie do biblioteki mfcmifc80.dll, którą można wykonać, klikając prawym przyciskiem myszy węzeł projektu w Eksplorator rozwiązań, wybierając polecenie Dodaj, Odwołanie, a następnie przechodząc do programu Microsoft Visual Studio 10.0\VC\atlmfc\lib.

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

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

    partial class UserControl1
    

    wprowadź następujące zmiany:

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

    private ICommandSource m_CmdSrc;
    
  6. Dodaj następujące definicje metody do UserControl1 (utworzymy identyfikator kontrolki MFC w następnym kroku):

    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 temacie How to: Create the User Control and Host MDI View (Jak utworzyć kontrolkę użytkownika i widok MDI hosta).

  8. Dodaj opcję menu, która wywoła singleMenuHandlerelement .

    Przejdź do widoku zasobów (Ctrl+Shift+E), rozwiń folder Menu , a następnie kliknij dwukrotnie IDR_MFC02TYPE. Spowoduje to wyświetlenie edytora menu.

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

    W Eksplorator rozwiązań otwórz plik Resource.h, skopiuj wartość identyfikatora dla opcji menu, którą właśnie dodano, i wklej tę wartość jako pierwszy parametr do m_CmdSrc.AddCommandHandler wywołania metody projektu Initialize C# (zastępując w 32771 razie potrzeby).

  9. Skompiluj i uruchom projekt.

    W menu Kompilacja kliknij pozycję Kompiluj rozwiązanie.

    W menu Debugowanie kliknij przycisk Start bez debugowania.

    Wybierz dodaną opcję menu. Zwróć uwagę, że wywoływana jest metoda w pliku DLL.

Zobacz też

Hostowanie kontrolki użytkownika interfejsu Windows Forms jako widoku MFC
Klasa ICommandSource
Klasa ICommandTarget