Cómo: Recibir eventos de formularios Windows en clases nativas de C++
Actualización: noviembre 2007
Se pueden habilitar clases C++ nativas para recibir devoluciones de llamada desde eventos administrados elevados a partir de controles de formularios Windows Forms u otros formularios con formato de mapa de macros de MFC. La recepción de eventos en vistas y cuadros de diálogo es similar a la misma tarea efectuada para los controles.
Para ello, debe:
Adjuntar un controlador de eventos OnClick al control mediante MAKE_DELEGATE.
Crear un mapa de delegados mediante BEGIN_DELEGATE_MAP, END_DELEGATE_MAP y EVENT_DELEGATE_ENTRY.
Ejemplo
Este ejemplo continúa el trabajo realizado en Cómo: Enlazar datos DDX/DDV con formularios Windows Forms.
Ahora, asociará el control MFC (m_MyControl) a un delegado del controlador de eventos administrados denominado OnClick para el evento Click administrado.
Agregue la primera línea de código a la implementación de BOOL CMFC01Dlg::OnInitDialog.
Agregue el mapa de delegados y la definición de OnClick a la sección pública de la declaración de clase CMFC01Dlg : CDialog público.
m_MyControl.GetControl()->button1->Click += MAKE_DELEGATE( System::EventHandler, OnClick );
// 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 ) {}