如何:接收来自本机 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
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈