방법: 네이티브 C++ 클래스에서 Windows Forms 이벤트 싱크
네이티브 C++ 클래스가 MFC 매크로 맵 형식을 사용하여 Windows Forms 컨트롤 또는 다른 양식에서 발생한 관리되는 이벤트에서 콜백을 받도록 설정할 수 있습니다. 보기 및 대화 상자에서 이벤트를 싱크하는 것은 컨트롤에 대해 동일한 작업을 수행하는 것과 유사합니다.
이렇게 하려면 다음을 수행해야 합니다.
OnClick
MAKE_DELEGATE 사용하여 이벤트 처리기를 컨트롤에 연결합니다.BEGIN_DELEGATE_MAP, END_DELEGATE_MAP 및 EVENT_DELEGATE_ENTRY 사용하여 대리자 맵을 만듭니다.
이 샘플은 방법: Windows Forms를 사용하여 DDX/DDV 데이터 바인딩 수행에서 수행된 작업을 계속합니다.
이제 MFC 컨트롤(m_MyControl
)을 관리 Click 되는 이벤트에 대해 호출 OnClick
된 관리되는 이벤트 처리기 대리자를 연결합니다.
OnClick 이벤트 처리기를 연결하려면 다음을 수행합니다.
BOOL CMFC01Dlg::OnInitDialog 구현에 다음 코드를 추가합니다.
m_MyControl.GetControl()->button1->Click += MAKE_DELEGATE( System::EventHandler, OnClick );
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 );
마지막으로 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