Поделиться через


Практическое руководство. Получение событий Windows Forms из собственных классов C++

Вы можете включить собственные классы C++ для получения обратных вызовов из управляемых событий, вызванных элементами управления Windows Forms или другими формами, с форматом карты макросов MFC. Приемник событий в представлениях и диалогах аналогичен выполнению той же задачи для элементов управления.

Для этого необходимо выполнить следующие действия.

В этом примере продолжается работа, описанная в разделе "Практическое руководство. Привязка данных DDX/DDV с помощью Windows Forms".

Теперь вы свяжите элемент управления MFC сm_MyControl делегатом управляемого обработчика событий, вызываемого OnClick для управляемого Click события.

Чтобы подключить обработчик событий OnClick, выполните следующие действия.

  1. Добавьте следующий код в реализацию BOOL CMFC01Dlg::OnInitDialog:

    m_MyControl.GetControl()->button1->Click += MAKE_DELEGATE( System::EventHandler, OnClick );
    
  2. Добавьте следующий код в общедоступный раздел в объявлении класса 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 );
    
  3. Наконец, добавьте реализацию для OnClick CMFC01Dlg.cpp:

    void CMFC01Dlg::OnClick(System::Object^ sender, System::EventArgs^ e)
    {
        AfxMessageBox(_T("Button clicked"));
    }
    

См. также

MAKE_DELEGATE
BEGIN_DELEGATE_MAP
END_DELEGATE_MAP
EVENT_DELEGATE_ENTRY