Практическое руководство. Добавление маршрутизации команд в элемент управления Windows Forms
Класс CWinFormsView направляет команды и сообщения пользовательского интерфейса об обновлении команд пользовательскому элементу управления, чтобы тот мог обрабатывать команды MFC (например, элементы меню формы и кнопки панели инструментов).
Пользовательский элемент управления использует функцию ICommandTarget::Initialize для хранения ссылки на объект источника команды в m_CmdSrc, как показано в следующем примере. Чтобы использовать интерфейс ICommandTarget, необходимо добавить ссылку на библиотеку mfcmifc80.dll.
Класс CWinFormsView обрабатывает несколько общих уведомлений MFC, перенаправляя их в управляемый пользовательский элемент управления. В эти уведомления входят методы OnInitialUpdate, OnUpdate и OnActivateView класса IView Interface.
В этом разделе предполагается, что читатель знаком с содержанием разделов Практическое руководство. Создание пользовательского элемента управления и ведущего приложения в диалоговом окне и Практическое руководство. Создание пользовательского элемента управления и просмотр ведущего интерфейса MDI.
Создание ведущего приложения MFC
Откройте библиотеку элементов управления Windows Forms, созданную в разделе Практическое руководство. Создание пользовательского элемента управления и ведущего приложения в диалоговом окне.
Добавьте ссылку на библиотеку mfcmifc80.dll, для этого правой кнопкой мыши щелкните узел проекта в обозревателе решений, выберите команду Добавить ссылку и затем перейдите в каталог Microsoft Visual Studio 10.0\VC\atlmfc\lib.
Откройте файл UserControl1.Designer.cs и добавьте следующее выражение:
using Microsoft.VisualC.MFC;
Также в файле UserControl1.Designer.cs измените эту строку:
partial class UserControl1
на следующую строку:
partial class UserControl1 : System.Windows.Forms.UserControl, ICommandTarget
Добавьте эту строку в качестве первой строки определения класса UserControl1:
private ICommandSource m_CmdSrc;
Добавьте следующие определения метода в класс UserControl1 (в следующем шаге создается идентификатор элемента управления 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."); }
Откройте приложение MFC, созданное в разделе Практическое руководство. Создание пользовательского элемента управления и просмотр ведущего интерфейса MDI.
Добавьте пункт меню, в котором будет вызываться метод singleMenuHandler.
Перейдите в окно Ресурсы (CTRL+SHIFT+E), раскройте папку Меню и дважды щелкните IDR_MFC02TYPE. Отобразится редактор меню.
Добавьте пункт меню в нижней части меню Вид. Запишите или запомните идентификатор для пункта меню в окне Свойства. Сохраните файл.
В окне Обозреватель решений откройте файл Resource.h, скопируйте значение идентификатора для добавленного пункта меню и вставьте это значение в качестве первого параметра вызова метода m_CmdSrc.AddCommandHandler в методе Initialize проекта C# (заменив в случае необходимости значение 32771).
Выполните построение и запуск проекта.
В меню Построение выберите Построить решение.
В меню Отладка выберите команду Запуск без отладки.
Выберите добавленный пункт меню. Обратите внимание, что метод вызывается в библиотеке DLL.
См. также
Ссылки
Другие ресурсы
Размещение пользовательского элемента управления формы Windows Forms в качестве представления MFC