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


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

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

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

CWinFormsView обрабатывает несколько распространенных уведомлений представления MFC, перенаправляя их в управляемый пользовательский элемент управления. Эти уведомления включают методы OnInitialUpdate, OnUpdate и OnActivateView .

В этом разделе предполагается, что вы ранее выполнили инструкции. Создание пользовательского элемента управления и узла в диалоговом окне и практическое руководство. Создание пользовательского элемента управления и представления MDI узла.

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

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

  2. Добавьте ссылку на библиотеку mfcfc80.dll, которую можно сделать, щелкнув правой кнопкой мыши узел проекта в Обозреватель решений, выбрав "Добавить", "Ссылка", а затем перейти в Microsoft Visual Studio 10.0\VC\atlmfc\lib.

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

    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.

См. также

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