Gewusst wie: Auffangen von Windows Forms-Ereignissen aus systemeigenen C++-Klassen
Systemeigene C++-Klassen sind in der Lage, Rückrufe von verwalteteten Ereignissen zu empfangen, die von Windows Forms-Steuerelementen oder anderen Formularen mit dem MFC-Makrozuordnungsformat ausgelöst wurden.Das Auffangen von Ereignissen in Anzeigen und Dialogfeldern entspricht der Vorgehensweise bei Steuerelementen.
Verfahren Sie dazu wie folgt:
Fügen Sie dem Steuerelement mit MAKE_DELEGATE einen OnClick-Ereignishandler hinzu.
Erstellen Sie mit BEGIN_DELEGATE_MAP, END_DELEGATE_MAP und EVENT_DELEGATE_ENTRY eine Delegatzuordnung.
In diesem Beispiel wird die Arbeit aus Gewusst wie: DDX-/DDV-Datenbindung mit Windows Forms fortgesetzt.
Nun verknüpfen Sie Ihr MFC-Steuerelement (m_MyControl) mit einem verwalteten Ereignishandlerdelegaten mit dem Namen OnClick für das verwaltete Click-Ereignis.
So fügen Sie den OnClick-Ereignishandler an
Fügen Sie der Implementierung von "BOOL CMFC01Dlg::OnInitDialog" den folgenden Code hinzu:
m_MyControl.GetControl()->button1->Click += MAKE_DELEGATE( System::EventHandler, OnClick );
Fügen Sie dem öffentlichen Abschnitt in der Deklaration der CMFC01Dlg : public CDialog-Klasse den folgenden Code hinzu:
// 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 );
Fügen Sie abschließend der Datei "CMFC01Dlg.cpp" die Implementierung für OnClick hinzu:
void CMFC01Dlg::OnClick(System::Object^ sender, System::EventArgs^ e) { AfxMessageBox(_T("Button clicked")); }