关于c++窗体的事件的解释
2个回答
展开全部
如何:接收来自本机 C++ 类的 Windows 窗体事件
Visual Studio 2012
其他版本
可以启用本机 C++ 类从 Windows 窗体控件或其他具有 MFC 宏映射格式的窗体所引发的托管事件中接收回调。
接收视图和对话框中的事件类似于接收控件中的事件。
为此,必须:
使用 MAKE_DELEGATE 将 OnClick 事件处理程序附加到该控件。
使用 BEGIN_DELEGATE_MAP、END_DELEGATE_MAP 和 EVENT_DELEGATE_ENTRY 创建委托映射。
此示例继续执行您在如何:使用 Windows 窗体执行 DDX/DDV 数据绑定 中完成的工作。
现在,将 MFC 控件 (m_MyControl) 与托管 Click 事件的名为 OnClick 的托管事件处理程序委托相关联。
附加 OnClick 事件处理程序:
将以下代码添加到 BOOL CMFC01Dlg::OnInitDialog 的实现中:
m_MyControl.GetControl()->button1->Click += MAKE_DELEGATE( System::EventHandler, OnClick );
将以下代码添加到 CMFC01Dlg : public CDialog 类声明的 public 节中。
// 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"));
}
Visual Studio 2012
其他版本
可以启用本机 C++ 类从 Windows 窗体控件或其他具有 MFC 宏映射格式的窗体所引发的托管事件中接收回调。
接收视图和对话框中的事件类似于接收控件中的事件。
为此,必须:
使用 MAKE_DELEGATE 将 OnClick 事件处理程序附加到该控件。
使用 BEGIN_DELEGATE_MAP、END_DELEGATE_MAP 和 EVENT_DELEGATE_ENTRY 创建委托映射。
此示例继续执行您在如何:使用 Windows 窗体执行 DDX/DDV 数据绑定 中完成的工作。
现在,将 MFC 控件 (m_MyControl) 与托管 Click 事件的名为 OnClick 的托管事件处理程序委托相关联。
附加 OnClick 事件处理程序:
将以下代码添加到 BOOL CMFC01Dlg::OnInitDialog 的实现中:
m_MyControl.GetControl()->button1->Click += MAKE_DELEGATE( System::EventHandler, OnClick );
将以下代码添加到 CMFC01Dlg : public CDialog 类声明的 public 节中。
// 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"));
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询