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


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

Обновлен: Ноябрь 2007

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

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

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

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

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

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

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

    using namespace 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("Got FILE_NEW");
    }
    
  7. Откройте приложение MFC, созданное в разделе Практическое руководство. Создание пользовательского элемента управления и ведущего приложения в диалоговом окне.

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

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

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

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

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

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

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

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

См. также

Ссылки

ICommandSource Interface

ICommandTarget Interface

CommandHandler Delegate

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

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