Procedura: elaborare eventi di Windows Form da classi C++ native
È possibile abilitare classi C++ native per ricevere callback da eventi gestiti generati da controlli Windows Form o altri moduli con il formato mappa macro MFC. Gli eventi di sink nelle visualizzazioni e nelle finestre di dialogo sono simili all'esecuzione della stessa attività per i controlli.
A questo scopo, è necessario:
Collegare un
OnClick
gestore eventi al controllo usando MAKE_DELEGATE.Creare una mappa dei delegati usando BEGIN_DELEGATE_MAP, END_DELEGATE_MAP e EVENT_DELEGATE_ENTRY.
Questo esempio continua il lavoro svolto in Procedura: Eseguire il data binding DDX/DDV con Windows Form.
A questo scopo, il controllo MFC (m_MyControl
) verrà associato a un delegato del gestore eventi gestito chiamato OnClick
per l'evento gestito Click .
Per collegare il gestore eventi OnClick:
Aggiungere il codice seguente all'implementazione di BOOL CMFC01Dlg::OnInitDialog:
m_MyControl.GetControl()->button1->Click += MAKE_DELEGATE( System::EventHandler, OnClick );
Aggiungere il codice seguente alla sezione public nella dichiarazione della classe CMFC01Dlg : 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 );
Aggiungere infine l'implementazione per
OnClick
a CMFC01Dlg.cpp:void CMFC01Dlg::OnClick(System::Object^ sender, System::EventArgs^ e) { AfxMessageBox(_T("Button clicked")); }
Vedi anche
MAKE_DELEGATE
BEGIN_DELEGATE_MAP
END_DELEGATE_MAP
EVENT_DELEGATE_ENTRY