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:

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

  1. Fügen Sie der Implementierung von "BOOL CMFC01Dlg::OnInitDialog" den folgenden Code hinzu:

    m_MyControl.GetControl()->button1->Click += MAKE_DELEGATE( System::EventHandler, OnClick );
    
  2. 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 );
    
  3. 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"));
    }
    

Siehe auch

Referenz

MAKE_DELEGATE

BEGIN_DELEGATE_MAP

END_DELEGATE_MAP

EVENT_DELEGATE_ENTRY