ActiveX 컨트롤 컨테이너: ActiveX 컨트롤에서 보낸 이벤트 처리
이 문서에서는 속성 창(클래스 뷰)을 사용하여 ActiveX 컨트롤 컨테이너에 ActiveX 컨트롤에 대한 이벤트 처리기를 설치하는 방법을 설명합니다. 이벤트 처리기는 컨트롤에서 특정 이벤트의 알림을 수신하고 응답에서 일부 작업을 수행하는 데 사용됩니다. 이 알림을 이벤트를 "발생"이라고 합니다.
Important
ActiveX는 새로운 개발에 사용하지 않아야 하는 레거시 기술입니다. ActiveX를 대체하는 최신 기술에 관한 자세한 내용은 ActiveX 컨트롤을 참조하세요.
참고 항목
이 문서에서는 컨테이너라는 대화 상자 기반 ActiveX 컨트롤 컨테이너 프로젝트와 Circ라는 포함된 컨트롤을 프로시저 및 코드의 예로 사용합니다.
속성 창(클래스 뷰)의 이벤트 단추를 사용하여 ActiveX 컨트롤 컨테이너 애플리케이션에서 발생할 수 있는 이벤트 맵을 만들 수 있습니다. "이벤트 싱크 맵"이라고 하는 이 맵은 컨트롤 컨테이너 클래스에 이벤트 처리기를 추가할 때 Visual C++에서 생성되고 기본. 이벤트 맵 항목으로 구현된 각 이벤트 처리기는 특정 이벤트를 컨테이너 이벤트 처리기 멤버 함수에 매핑합니다. 이 이벤트 처리기 함수는 ActiveX 컨트롤 개체에 의해 지정된 이벤트가 발생할 때 호출됩니다.
이벤트 싱크 맵에 대한 자세한 내용은 클래스 라이브러리 참조의 이벤트 싱크 지도 참조하세요.
프로젝트에 대한 이벤트 처리기 수정
속성 창을 사용하여 이벤트 처리기를 추가하면 이벤트 싱크 맵이 선언되고 프로젝트에 정의됩니다. 다음 문이 컨트롤에 추가됩니다. 이벤트 처리기가 처음 추가되면 CPP 파일입니다. 이 코드는 대화 상자 클래스에 대한 이벤트 싱크 맵을 선언합니다(이 경우 CContainerDlg
).
BEGIN_EVENTSINK_MAP(CContainerDlg, CDialog)
END_EVENTSINK_MAP()
속성 창을 사용하여 이벤트를 추가하면 이벤트 싱크 맵에 이벤트 맵 항목(ON_EVENT
)이 추가되고 이벤트 처리기 함수가 컨테이너의 구현()에 추가됩니다. CPP) 파일입니다.
다음 예제에서는 Circ 컨트롤의 ClickIn
이벤트에 대해 호출OnClickInCircCtrl
된 이벤트 처리기를 선언합니다.
BEGIN_EVENTSINK_MAP(CContainerDlg, CDialog)
ON_EVENT(CContainerDlg, IDC_CIRCCTRL1, 1 /* ClickIn */, OnClickInCircctrl1,
VTS_I4 VTS_I4)
END_EVENTSINK_MAP()
또한 다음 템플릿이 클래스 구현()에 CContainerDlg
추가됩니다. 이벤트 처리기 멤버 함수에 대한 CPP) 파일:
BOOL CContainerDlg::OnClickInCircctrl1(OLE_XPOS_PIXELS nX, OLE_YPOS_PIXELS nY)
{
// use nX and nY here
TRACE(_T("nX = %d, nY = %d\n"), nX, nY);
return TRUE;
}
이벤트 싱크 매크로에 대한 자세한 내용은 클래스 라이브러리 참조의 이벤트 싱크 지도 참조하세요.
이벤트 처리기 함수를 만들려면
클래스 뷰에서 ActiveX 컨트롤이 포함된 대화 상자 클래스를 선택합니다. 이 예제에서는
CContainerDlg
를 사용합니다.속성 창에서 이벤트 단추를 클릭합니다.
속성 창에서 포함된 ActiveX 컨트롤의 컨트롤 ID를 선택합니다. 이 예제에서는
IDC_CIRCCTRL1
를 사용합니다.속성 창에는 포함된 ActiveX 컨트롤에서 실행할 수 있는 이벤트 목록이 표시됩니다. 굵게 표시된 멤버 함수에는 이미 처리기 함수가 할당되어 있습니다.
대화 상자 클래스에서 처리할 이벤트를 선택합니다. 이 예제에서는 클릭을 선택합니다.
오른쪽의 드롭다운 목록 상자에서 ClickCircctrl1 추가를 선택합니다<.>
클래스 뷰에서 새 처리기 함수를 두 번 클릭하여 구현의 이벤트 처리기 코드로 이동합니다(.) 의 CPP) 파일
CContainerDlg