Практическое руководство. Получение событий Windows Forms из собственных классов C++
Вы можете включить собственные классы C++ для получения обратных вызовов из управляемых событий, вызванных элементами управления Windows Forms или другими формами, с форматом карты макросов MFC. Приемник событий в представлениях и диалогах аналогичен выполнению той же задачи для элементов управления.
Для этого необходимо выполнить следующие действия.
Подключите обработчик событий к элементу
OnClick
управления с помощью MAKE_DELEGATE.Создайте карту делегата с помощью BEGIN_DELEGATE_MAP, END_DELEGATE_MAP и EVENT_DELEGATE_ENTRY.
В этом примере продолжается работа, описанная в разделе "Практическое руководство. Привязка данных DDX/DDV с помощью Windows Forms".
Теперь вы свяжите элемент управления MFC сm_MyControl
делегатом управляемого обработчика событий, вызываемого OnClick
для управляемого Click события.
Чтобы подключить обработчик событий OnClick, выполните следующие действия.
Добавьте следующий код в реализацию BOOL CMFC01Dlg::OnInitDialog:
m_MyControl.GetControl()->button1->Click += MAKE_DELEGATE( System::EventHandler, OnClick );
Добавьте следующий код в общедоступный раздел в объявлении класса CMFC01Dlg : public CDialog.
// delegate map BEGIN_DELEGATE_MAP( CMFC01Dlg ) EVENT_DELEGATE_ENTRY( OnClick, System::Object^, System::EventArgs^ ) END_DELEGATE_MAP() void OnClick( System::Object^ sender, System::EventArgs^ e );
Наконец, добавьте реализацию для
OnClick
CMFC01Dlg.cpp:void CMFC01Dlg::OnClick(System::Object^ sender, System::EventArgs^ e) { AfxMessageBox(_T("Button clicked")); }
См. также
MAKE_DELEGATE
BEGIN_DELEGATE_MAP
END_DELEGATE_MAP
EVENT_DELEGATE_ENTRY