如何:從原生 C++ 類別接收 Windows Form 事件
您可以啟用原生 C++ 類別,以接收來自 Windows Form 控制項或使用 MFC 巨集對應格式的其他表單所引發 Managed 事件的回呼。 在對話方塊和檢視中的接收事件類似執行控制項的相同工作。
若要進行這項工作,您必須:
使用 MAKE_DELEGATE 將 OnClick 事件處理常式附加至控制項。
使用 BEGIN_DELEGATE_MAP、END_DELEGATE_MAP 和 EVENT_DELEGATE_ENTRY 建立委派對應。
此範例會繼續進行您之前在 如何:使用 Windows Form 執行 DDX/DDV 資料繫結中的工作。
現在,您會針對 Managed Click 事件,將 MFC 控制項 (m_MyControl) 與稱為 OnClick 的 Managed 事件處理常式委派產生關聯。
若要附加 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")); }