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 :
Joignez un gestionnaire d'événements OnClick au contrôle à l'aide de MAKE_DELEGATE.
Créez un mappage de délégué à l'aide de BEGIN_DELEGATE_MAP, END_DELEGATE_MAP et EVENT_DELEGATE_ENTRY.
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 :
Ajoutez le code suivant à l'implémentation de BOOL CMFC01Dlg::OnInitDialog :
m_MyControl.GetControl()->button1->Click += MAKE_DELEGATE( System::EventHandler, OnClick );
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 );
Enfin, ajoutez l'implémentation pour OnClick à CMFC01Dlg.cpp :
void CMFC01Dlg::OnClick(System::Object^ sender, System::EventArgs^ e) { AfxMessageBox(_T("Button clicked")); }