如何:從原生 C++ 類別接收 Windows Form 事件
您可以啟用原生C++類別,以從 Windows Forms 控件或其他具有 MFC 巨集對應格式的受管理事件接收回呼。 檢視和對話框中的接收事件類似於對控件執行相同的工作。
若要這樣做,您需要:
使用 MAKE_DELEGATE 將
OnClick
事件處理程式附加至 控制項。使用 BEGIN_DELEGATE_MAP、 END_DELEGATE_MAP和 EVENT_DELEGATE_ENTRY建立委派對應。
此範例會繼續您在如何:使用 Windows Forms 執行 DDX/DDV 數據系結中所做的工作。
現在,您會將 MFC 控制件 (m_MyControl
) 與針對 Managed 事件呼叫 OnClick
的 Managed 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