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
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour