Поделиться через


Практическое руководство. Добавление маршрутизации команд в элемент управления Windows Forms

Класс CWinFormsView направляет команды и сообщения пользовательского интерфейса об обновлении команд пользовательскому элементу управления, чтобы тот мог обрабатывать команды MFC (например, элементы меню формы и кнопки панели инструментов).

Пользовательский элемент управления использует функцию ICommandTarget::Initialize для хранения ссылки на объект источника команды в m_CmdSrc, как показано в следующем примере. Чтобы использовать интерфейс ICommandTarget, необходимо добавить ссылку на библиотеку mfcmifc80.dll.

Класс CWinFormsView обрабатывает несколько общих уведомлений MFC, перенаправляя их в управляемый пользовательский элемент управления. В эти уведомления входят методы OnInitialUpdate, OnUpdate и OnActivateView класса IView Interface.

В этом разделе предполагается, что читатель знаком с содержанием разделов Практическое руководство. Создание пользовательского элемента управления и ведущего приложения в диалоговом окне и Практическое руководство. Создание пользовательского элемента управления и просмотр ведущего интерфейса MDI.

Создание ведущего приложения MFC

  1. Откройте библиотеку элементов управления Windows Forms, созданную в разделе Практическое руководство. Создание пользовательского элемента управления и ведущего приложения в диалоговом окне.

  2. Добавьте ссылку на библиотеку mfcmifc80.dll, для этого правой кнопкой мыши щелкните узел проекта в обозревателе решений, выберите команду Добавить ссылку и затем перейдите в каталог Microsoft Visual Studio 10.0\VC\atlmfc\lib.

  3. Откройте файл UserControl1.Designer.cs и добавьте следующее выражение:

    using Microsoft.VisualC.MFC;
    
  4. Также в файле UserControl1.Designer.cs измените эту строку:

    partial class UserControl1
    

    на следующую строку:

    partial class UserControl1 : System.Windows.Forms.UserControl, ICommandTarget
    
  5. Добавьте эту строку в качестве первой строки определения класса UserControl1:

    private ICommandSource m_CmdSrc;
    
  6. Добавьте следующие определения метода в класс 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.");
    }
    
  7. Откройте приложение MFC, созданное в разделе Практическое руководство. Создание пользовательского элемента управления и просмотр ведущего интерфейса MDI.

  8. Добавьте пункт меню, в котором будет вызываться метод singleMenuHandler.

    Перейдите в окно Ресурсы (CTRL+SHIFT+E), раскройте папку Меню и дважды щелкните IDR_MFC02TYPE. Отобразится редактор меню.

    Добавьте пункт меню в нижней части меню Вид. Запишите или запомните идентификатор для пункта меню в окне Свойства. Сохраните файл.

    В окне Обозреватель решений откройте файл Resource.h, скопируйте значение идентификатора для добавленного пункта меню и вставьте это значение в качестве первого параметра вызова метода m_CmdSrc.AddCommandHandler в методе Initialize проекта C# (заменив в случае необходимости значение 32771).

  9. Выполните построение и запуск проекта.

    В меню Построение выберите Построить решение.

    В меню Отладка выберите команду Запуск без отладки.

    Выберите добавленный пункт меню. Обратите внимание, что метод вызывается в библиотеке DLL.

См. также

Ссылки

ICommandSource Interface

ICommandTarget Interface

CommandHandler Delegate

Другие ресурсы

Размещение пользовательского элемента управления формы Windows Forms в качестве представления MFC