Cómo: Recibir eventos de Windows Forms de clases nativas de C++
Puede habilitar clases nativas de C++ para recibir devoluciones de llamada de eventos administrados generados desde controles de Windows Forms u otros formularios con el formato de asignación de macros MFC. Los eventos de recepción en vistas y cuadros de diálogo es similar a realizar la misma tarea para los controles.
Para ello, necesita lo siguiente:
Adjunte un controlador de eventos
OnClick
al control mediante MAKE_DELEGATE.Cree un mapa delegado mediante BEGIN_DELEGATE_MAP, END_DELEGATE_MAP y EVENT_DELEGATE_ENTRY.
En este ejemplo se continúa el trabajo que ha realizado en Cómo: Enlazar datos DDX/DDV con formularios Windows Forms.
Ahora, asociará el control MFC (m_MyControl
) con un delegado de controlador de eventos administrados llamado OnClick
para el evento administrado Click.
Para adjuntar el controlador de eventos OnClick:
Agregue el código siguiente a la implementación de BOOL CMFC01Dlg::OnInitDialog:
m_MyControl.GetControl()->button1->Click += MAKE_DELEGATE( System::EventHandler, OnClick );
Agregue el código siguiente a la sección pública en la declaración de la clase 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 );
Por último, agregue la implementación para
OnClick
a CMFC01Dlg.cpp:void CMFC01Dlg::OnClick(System::Object^ sender, System::EventArgs^ e) { AfxMessageBox(_T("Button clicked")); }
Consulte también
MAKE_DELEGATE
BEGIN_DELEGATE_MAP
END_DELEGATE_MAP
EVENT_DELEGATE_ENTRY