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 :
Attachez un gestionnaire d’événements
OnClick
au contrôle à l’aide de MAKE_DELEGATE.Créez une carte de délégués à l’aide de BEGIN_DELEGATE_MAP, de END_DELEGATE_MAP et de EVENT_DELEGATE_ENTRY.
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 :
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 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 );
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