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
Otwórz bibliotekę kontrolek formularzy systemu Windows utworzoną w procedurze Porady: tworzenie formantu użytkownika i hosta w oknie dialogowym.
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.
Otwórz plik UserControl1.Designer.cs i dodaj następującą instrukcję using:
using Microsoft.VisualC.MFC;
Ponadto w UserControl1.Designer.cs zmień ten wiersz:
partial class UserControl1
do tego:
partial class UserControl1 : System.Windows.Forms.UserControl, ICommandTarget
Dodaj to jako pierwszy wiersz w definicji klasy dla UserControl1:
private ICommandSource m_CmdSrc;
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."); }
Otwórz aplikację MFC utworzoną w procedurze Porady: tworzenie formantu użytkownika i hostowanie widoku MDI.
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).
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
CommandHandler — Obiekt delegowany
Inne zasoby
Hostowanie formantu użytkownika interfejsu Windows Forms jako widoku MFC