ActiveX 컨트롤에서 이벤트를 처리 하는 ActiveX 컨트롤 컨테이너:
속성 창을 사용 하 여 ActiveX 컨트롤에 대 한 이벤트 처리기는 ActiveX 컨트롤 컨테이너에 설치에 대해 설명 합니다.이벤트 처리기는 특정 이벤트의 알림 (컨트롤)에서 수신 하 고 응답에 일부 동작을 수행 하는 데 사용 됩니다.이러한 알림은 이벤트 "발생" 이라고 합니다.
[!참고]
이 문서에서는 컨테이너 및 포함된 컨트롤 Circ 절차 및 코드 예제로 라는 이름의 대화 상자 기반 ActiveX 컨트롤 컨테이너 프로젝트를 사용 합니다.
속성 창에서 이벤트 단추를 사용 하 여 ActiveX 컨트롤 컨테이너 응용 프로그램에서 발생할 수 있는 이벤트의 지도 만들 수 있습니다.라는 단어는 "이벤트 싱크 맵을' 라는이 맵을 만들어 컨트롤 컨테이너 클래스에 이벤트 처리기를 추가할 때 Visual C++로 유지 합니다.이벤트 맵 엔트리와 함께 구현 되는 각 이벤트 처리기는 특정 이벤트를 컨테이너 이벤트 처리기 멤버 함수에 매핑합니다.이 이벤트 처리기 함수는 ActiveX control 개체에는 지정 된 이벤트가 발생할 때 호출 됩니다.
이벤트 싱크 맵을 대 한 자세한 내용은 이벤트 싱크 맵을 에 있는 클래스 라이브러리 참조.
이벤트 처리기는 프로젝트 수정
속성 창을 사용 하 여 이벤트 처리기를 추가 하는 경우는 이벤트 싱크 맵은 선언 되 고 프로젝트에 정의 됩니다.다음 명령문을 컨트롤에 추가 됩니다.CPP 파일 처음으로 이벤트 처리기를 추가 합니다.이 코드는 대화 상자 클래스에는 이벤트 싱크 맵을 선언 (이 경우 CContainerDlg):
BEGIN_EVENTSINK_MAP(CContainerDlg, CDialog)
...
END_EVENTSINK_MAP()
속성 창을 사용 하 여 이벤트를 추가할 때 이벤트 맵 엔트리 (ON_EVENT) 추가 이벤트 싱크 맵을 이벤트 처리기 함수는 컨테이너 구현에 추가 됩니다 (.CPP) 파일입니다.
다음 예제에서는 호출 하는 이벤트 처리기 선언 OnClickInCircCtrl에서 Circ 컨트롤의 ClickIn 이벤트:
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 컨트롤에 의해 발생할 수 있는 이벤트 목록이 표시 됩니다.이미 굵게 표시 된 멤버 함수에 지정 된 처리기 함수를 있습니다.
이벤트를 처리 하는 대화 상자 클래스를 선택 합니다.이 예제에서는 선택 클릭.
오른쪽에 있는 드롭다운 목록 상자에서 선택한 <Add> ClickCircctrl1.
클래스 뷰를 구현에서 하는 이벤트 처리기 코드를 이동할 새 처리기 함수를 두 번 클릭 (.Cpp) CContainerDlg.