Como coletar eventos dos Windows Forms a partir de classes C++ nativas
Você pode habilitar classes C++ nativas para receberem retornos de chamada de eventos gerenciados gerados de controles do Windows Forms ou de outros formulários com o formato de mapa de macro MFC. Coletar eventos em modos de exibição e caixas de diálogo é semelhante a realizar a mesma tarefa para controles.
Para fazer isso, você precisa:
Anexe um manipulador de eventos
OnClick
ao controle usando MAKE_DELEGATE.Crie um mapa delegado usando BEGIN_DELEGATE_MAP, END_DELEGATE_MAP e EVENT_DELEGATE_ENTRY.
Este exemplo continua o trabalho que você fez em Como fazer associação de dados DDX/DDV com o Windows Forms.
Agora, você associará seu controle MFC (m_MyControl
) a um delegado do manipulador de eventos gerenciado chamado OnClick
para o evento gerenciado Click.
Para anexar o manipulador de eventos OnClick:
Adicione o seguinte código à implementação do BOOL CMFC01Dlg::OnInitDialog:
m_MyControl.GetControl()->button1->Click += MAKE_DELEGATE( System::EventHandler, OnClick );
Adicione o seguinte código à seção pública na declaração da classe 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 fim, adicione a implementação de
OnClick
para CMFC01Dlg.cpp:void CMFC01Dlg::OnClick(System::Object^ sender, System::EventArgs^ e) { AfxMessageBox(_T("Button clicked")); }
Confira também
MAKE_DELEGATE
BEGIN_DELEGATE_MAP
END_DELEGATE_MAP
EVENT_DELEGATE_ENTRY