Como coletar eventos dos Windows Forms a partir de classes C++ nativas
Você pode habilitar classes nativas do C++ para receber retornos de chamada de eventos gerados gerenciados dos controles do Windows Forms ou de outras formas com o formato macro do mapa MFC. Afundar eventos nas exibições e as caixas de diálogo é semelhante ao fazer a mesma tarefa para controles.
Para fazer isso, você precisa:
Anexar um manipulador de eventos de OnClick ao controle usando MAKE_DELEGATE.
Criar um mapa de delegação usando BEGIN_DELEGATE_MAP, END_DELEGATE_MAP, e EVENT_DELEGATE_ENTRY.
Este exemplo continua o trabalho que você fez em Como fazer a associação de dados DDX/DDV aos Windows Forms.
Agora, o associará o controle (MFCm_MyControl) com um representante gerenciado do manipulador de eventos chamado OnClick para o evento gerenciada de Click .
Para anexar o manipulador de eventos de OnClick:
Adicione o seguinte código para a implementação de BOOL CMFC01Dlg::OnInitDialog:
m_MyControl.GetControl()->button1->Click += MAKE_DELEGATE( System::EventHandler, OnClick );
Adicione o seguinte código na seção pública na declaração de classe CMFC01Dlg: CDialog utilitário.
// 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 fim, adicione a implementação para OnClick a CMFC01Dlg.cpp:
void CMFC01Dlg::OnClick(System::Object^ sender, System::EventArgs^ e) { AfxMessageBox(_T("Button clicked")); }