다음을 통해 공유


방법: 네이티브 C++ 클래스에서 Windows Forms 이벤트 싱크

네이티브 C++ 클래스가 MFC 매크로 맵 형식을 사용하여 Windows Forms 컨트롤 또는 다른 양식에서 발생한 관리되는 이벤트에서 콜백을 받도록 설정할 수 있습니다. 보기 및 대화 상자에서 이벤트를 싱크하는 것은 컨트롤에 대해 동일한 작업을 수행하는 것과 유사합니다.

이렇게 하려면 다음을 수행해야 합니다.

  • OnClick MAKE_DELEGATE 사용하여 이벤트 처리기를 컨트롤에 연결합니다.

  • BEGIN_DELEGATE_MAP, END_DELEGATE_MAPEVENT_DELEGATE_ENTRY 사용하여 대리자 맵을 만듭니다.

이 샘플은 방법: Windows Forms사용하여 DDX/DDV 데이터 바인딩 수행에서 수행된 작업을 계속합니다.

이제 MFC 컨트롤(m_MyControl)을 관리 Click 되는 이벤트에 대해 호출 OnClick 된 관리되는 이벤트 처리기 대리자를 연결합니다.

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. 마지막으로 CMFC01Dlg.cpp에 대한 OnClick 구현을 추가합니다.

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

참고 항목

MAKE_DELEGATE
BEGIN_DELEGATE_MAP
END_DELEGATE_MAP
EVENT_DELEGATE_ENTRY