Postupy: Zpracování událostí modelu Windows Forms z nativních tříd jazyka C++
Můžete umožnit nativním třídám C++ přijímat zpětná volání ze spravovaných událostí z ovládacích prvků modelu Windows Forms nebo jiných formulářů s formátem mapy maker MFC.Zpracování událostí ve zobrazeních a dialogových oknech se podobá provedení stejné úlohy pro ovládací prvky.
Abyste tak učinili, potřebujete:
Připojit obslužnou rutinu OnClick k ovládacímu prvku pomocí MAKE_DELEGATE.
Vytvořit mapu delegáta pomocí BEGIN_DELEGATE_MAP, END_DELEGATE_MAP a EVENT_DELEGATE_ENTRY.
Tato ukázka pokračuje v práci, kterou jste provedli v Postupy: Vytvoření datové vazby DDX/DDV s modelem Windows Forms.
Nyní přiřadíte váš ovládací prvek MFC (m_MyControl) se spravovaným delegátem obslužné rutiny události nazvané OnClick pro spravovanou událost Click.
Pro přiřazení obslužné rutiny události OnClick:
Přidejte následující kód do implementace BOOL CMFC01Dlg::OnInitDialog:
m_MyControl.GetControl()->button1->Click += MAKE_DELEGATE( System::EventHandler, OnClick );
Přidejte následující kód do veřejného oddílu v deklaraci třídy 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 );
Nakonec přidejte implementaci pro OnClick do CMFC01Dlg.cpp:
void CMFC01Dlg::OnClick(System::Object^ sender, System::EventArgs^ e) { AfxMessageBox(_T("Button clicked")); }