如何:接收来自本机 C++ 类的 Windows 窗体事件

你可以启用本机 C++ 类,以接收从 Windows 窗体控件或其他具有 MFC 宏映射格式的窗体引发的托管事件的回调。 在视图和对话框中接收事件类似于对控件执行相同的任务。

若要实现此目的,需要:

此示例继续你在如何:使用 Windows 窗体执行 DDX/DDV 数据绑定中所做的工作。

现在,你将 MFC 控件 (m_MyControl) 与托管事件处理程序委托关联,该委托称为 OnClick,用于托管 Click 事件。

要附加 OnClick 事件处理程序:

  1. 将以下行添加到 BOOL CMFC01Dlg::OnInitDialog 的实现中:

    m_MyControl.GetControl()->button1->Click += MAKE_DELEGATE( System::EventHandler, OnClick );
    
  2. 将以下代码添加到类 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 );
    
  3. 最后,将 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