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

Vous pouvez activer les classes C++ natives pour recevoir des rappels à partir d’événements managés déclenchés à partir de contrôles Windows Forms ou d’autres formulaires avec le format de carte de macro MFC. Le récepteur d’événements dans les vues et les dialogues est similaire à la même tâche pour les contrôles.

Pour cela, vous devez procéder comme suit :

Cet exemple poursuit le travail que vous avez effectué dans How to : Do DDX/VDD Data Binding with Windows Forms.

À présent, vous allez associer votre contrôle MFC (m_MyControl) à un délégué de gestionnaire d’événements managés appelé OnClick pour l’événement managé Click .

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 dans la déclaration de la classe CMFC01Dlg : CDialog public.

    // 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

MAKE_DELEGATE
BEGIN_DELEGATE_MAP
END_DELEGATE_MAP
EVENT_DELEGATE_ENTRY