Partager via


Comment : recevoir des événements Windows Forms de classes C++ natives

Vous pouvez permettre aux classes C++ natives de recevoir des rappels d'événements managés déclenchés à partir de contrôles Windows Forms ou d'autres formulaires avec le format de mappage de macro MFC. La réception des événements dans les vues et les dialogues est similaire à l'exécution de la même tâche pour les contrôles.

Pour cela, vous devez :

Cet exemple continue les tâches que vous avez effectuées dans Comment : établir la liaison des données DDX/DDV avec Windows Forms.

Vous allez maintenant associer votre contrôle MFC (m_MyControl) à un délégué de gestionnaires d'événements managé appelé OnClick pour l'événement Click managé.

Pour attacher le gestionnaire d'événements OnClick :

  1. Ajoutez le code suivant à l'implémentation de BOOL CMFC01Dlg::OnInitDialog :

    m_MyControl.GetControl()->button1->Click += MAKE_DELEGATE( System::EventHandler, OnClick );
    
  2. Ajoutez le code suivant à la section publique figurant dans la déclaration de classe CMFC01Dlg : public CDialog.

    // 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. Enfin, ajoutez l'implémentation pour OnClick à CMFC01Dlg.cpp :

    void CMFC01Dlg::OnClick(System::Object^ sender, System::EventArgs^ e)
    {
        AfxMessageBox(_T("Button clicked"));
    }
    

Voir aussi

Référence

MAKE_DELEGATE

BEGIN_DELEGATE_MAP

END_DELEGATE_MAP

EVENT_DELEGATE_ENTRY