Gewusst wie: Auffangen von Windows Forms-Ereignissen aus systemeigenen C++-Klassen
Aktualisiert: November 2007
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 stammen. 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.
Beispiel
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.
Fügen Sie der Implementierung von BOOL CMFC01Dlg::OnInitDialog die erste Codezeile hinzu.
Fügen Sie der Deklaration der CMFC01Dlg : public CDialog-Klasse im öffentlichen Abschnitt die Delegatzuordnung und die OnClick-Definition hinzu.
m_MyControl.GetControl()->button1->Click += MAKE_DELEGATE( System::EventHandler, OnClick );
// 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 ) {}