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