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 Instrukcje: Do DDX/Przeglądarka danych diagnostycznych powiązanie danych 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
do pliku 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
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla