如何:接收来自本机 C++ 类的 Windows 窗体事件
你可以启用本机 C++ 类,以接收从 Windows 窗体控件或其他具有 MFC 宏映射格式的窗体引发的托管事件的回调。 在视图和对话框中接收事件类似于对控件执行相同的任务。
若要实现此目的,需要:
使用 MAKE_DELEGATE 将
OnClick
事件处理程序附加到控件。使用 BEGIN_DELEGATE_MAP、END_DELEGATE_MAP 和 EVENT_DELEGATE_ENTRY 创建委托映射。
此示例继续你在如何:使用 Windows 窗体执行 DDX/DDV 数据绑定中所做的工作。
现在,你将 MFC 控件 (m_MyControl
) 与托管事件处理程序委托关联,该委托称为 OnClick
,用于托管 Click 事件。
要附加 OnClick 事件处理程序:
将以下行添加到 BOOL CMFC01Dlg::OnInitDialog 的实现中:
m_MyControl.GetControl()->button1->Click += MAKE_DELEGATE( System::EventHandler, OnClick );
将以下代码添加到类 CMFC01Dlg 声明中的 public 部分: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