Gewusst wie: Auffangen von Windows Forms-Ereignissen aus systemeigenen C++-Klassen
Sie können systemeigene C++-Klassen aktivieren, um Rückrufe von verwalteten Ereignissen zu empfangen, die von Windows Forms-Steuerelementen oder anderen Formularen mit dem MFC-Makrozuordnungsformat ausgelöst werden. Das Senken von Ereignissen in Ansichten und Dialogfeldern ähnelt dem Ausführen derselben Aufgabe für Steuerelemente.
Gehen Sie hierzu wie folgt vor:
Fügen Sie einen
OnClick
Ereignishandler mithilfe von MAKE_DELEGATE an das Steuerelement an.Erstellen Sie eine Stellvertretungszuordnung mithilfe von BEGIN_DELEGATE_MAP, END_DELEGATE_MAP und EVENT_DELEGATE_ENTRY.
In diesem Beispiel wird die Arbeit fortgesetzt, die Sie in How to: Do DDX/DDV Data Binding with Windows Forms ausgeführt haben.
Jetzt ordnen Sie Ihr MFC-Steuerelement (m_MyControl
) einem verwalteten Ereignishandlerdelegat zu, der für das verwaltete Click Ereignis aufgerufen wirdOnClick
.
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 den folgenden Code zum öffentlichen Abschnitt in der Deklaration der Klasse CMFC01Dlg : public CDialog 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 schließlich die Implementierung für
OnClick
CMFC01Dlg.cpp hinzu:void CMFC01Dlg::OnClick(System::Object^ sender, System::EventArgs^ e) { AfxMessageBox(_T("Button clicked")); }
Siehe auch
MAKE_DELEGATE
BEGIN_DELEGATE_MAP
END_DELEGATE_MAP
EVENT_DELEGATE_ENTRY