Porady: wychwytywanie zdarzeń interfejsu Windows Forms z klas natywnych języka C++
Można włączyć natywne klasy języka C++, aby odbierać wywołania zwrotne z zdarzeń zarządzanych wywoływanych z kontrolek windows Forms lub innych formularzy z formatem mapy makr MFC. Ujście zdarzeń w widokach i oknach dialogowych jest podobne do wykonywania tego samego zadania dla kontrolek.
W tym celu należy:
Dołącz program obsługi zdarzeń
OnClick
do kontrolki przy użyciu MAKE_DELEGATE.Utwórz mapę delegatów przy użyciu BEGIN_DELEGATE_MAP, END_DELEGATE_MAP i EVENT_DELEGATE_ENTRY.
Ten przykład kontynuuje pracę wykonaną w temacie How to: Do DDX/DDV Data Binding with Windows Forms (Jak wykonać powiązanie danych DDX/DDV za pomocą formularzy systemu Windows).
Teraz skojarzysz kontrolkę MFC (m_MyControl
) z pełnomocnikiem zarządzanego programu obsługi zdarzeń wywoływanym OnClick
dla zdarzenia zarządzanego Click .
Aby dołączyć procedurę obsługi zdarzeń OnClick:
Dodaj następujący kod do implementacji pliku BOOL CMFC01Dlg::OnInitDialog:
m_MyControl.GetControl()->button1->Click += MAKE_DELEGATE( System::EventHandler, OnClick );
Dodaj następujący kod do sekcji publicznej w deklaracji klasy 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 );
Na koniec dodaj implementację polecenia
OnClick
, aby CMFC01Dlg.cpp:void CMFC01Dlg::OnClick(System::Object^ sender, System::EventArgs^ e) { AfxMessageBox(_T("Button clicked")); }
Zobacz też
MAKE_DELEGATE
BEGIN_DELEGATE_MAP
END_DELEGATE_MAP
EVENT_DELEGATE_ENTRY