Практическое руководство. Получение событий 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 );
Добавьте в раздел public объявления класса 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")); }