Freigeben über


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:

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:

  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 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 );
    
  3. 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