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_CmdSrc
programie , jak pokazano w poniższym przykładzie. Aby użyć ICommandTarget
, należy dodać odwołanie do 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
Otwórz bibliotekę kontrolek formularzy systemu Windows utworzoną w temacie Instrukcje: tworzenie kontrolki użytkownika i hosta w oknie dialogowym.
Dodaj odwołanie do mfcmifc80.dll, które można zrobić, 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.
Otwórz UserControl1.Designer.cs i dodaj następującą instrukcję using:
using Microsoft.VisualC.MFC;
Ponadto w UserControl1.Designer.cs zmień następujący wiersz:
partial class UserControl1
wprowadź następujące zmiany:
partial class UserControl1 : System.Windows.Forms.UserControl, ICommandTarget
Dodaj to jako pierwszy wiersz definicji klasy dla
UserControl1
elementu :private ICommandSource m_CmdSrc;
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."); }
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).
Dodaj opcję menu, która wywoła
singleMenuHandler
element .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 projektuInitialize
C# (zastępując w32771
razie potrzeby).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 .dll.
Zobacz też
Hostowanie kontrolki użytkownika interfejsu Windows Forms jako widoku MFC
Klasa ICommandSource
Klasa ICommandTarget