Jak: obiekt Sink zdarzenia Windows Forms macierzystych klas C++
Można włączyć macierzystych klas C++ do odbierania wywołań zwrotnych z zarządzanych zdarzenia wywoływane z formantów Windows Forms lub innych form w formacie mapy makro MFC.Zatopienia zdarzeń w widokach i okien dialogowych jest podobne do wykonywania tego samego zadania dla formantów.
Aby to zrobić, trzeba:
Dołącz OnClick obsługi zdarzeń przy użyciu formantu MAKE_DELEGATE.
Tworzenie mapy obiektu delegowanego przy użyciu BEGIN_DELEGATE_MAP, END_DELEGATE_MAP, i EVENT_DELEGATE_ENTRY.
Próbka ta kontynuuje pracę w Jak: czy powiązanie danych DDX/DDV z Windows Forms.
Teraz należy skojarzyć formantu MFC (m_MyControl) z pełnomocnik obsługi zdarzeń zarządzanych o nazwie OnClick dla zarządzanych Click zdarzenia.
Aby dołączyć program obsługi zdarzeń:
Dodaj następujący kod do wykonania 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: CDialog publicznych.
// 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 należy dodać wykonania na OnClick do CMFC01Dlg.cpp:
void CMFC01Dlg::OnClick(System::Object^ sender, System::EventArgs^ e) { AfxMessageBox(_T("Button clicked")); }