다음을 통해 공유


이벤트 맵

컨트롤이 컨테이너에 키 입력, 마우스 클릭 또는 컨트롤 상태 변경과 같은 일부 작업(예: 컨트롤 개발자에 의해 결정됨)이 발생했음을 알리려고 할 때마다 이벤트 발생 함수를 호출합니다. 이 함수는 컨트롤 컨테이너에 관련 이벤트를 발생시켜 몇 가지 중요한 작업이 발생했음을 알립니다.

Microsoft Foundation 클래스 라이브러리는 이벤트 발생에 최적화된 프로그래밍 모델을 제공합니다. 이 모델에서 "이벤트 맵"은 특정 컨트롤에 대한 이벤트를 발생시키는 함수를 지정하는 데 사용됩니다. 이벤트 맵에는 각 이벤트에 대해 하나의 매크로가 포함되어 있습니다. 예를 들어 stock Click 이벤트를 발생시키는 이벤트 맵은 다음과 같습니다.

BEGIN_EVENT_MAP(CMyAxCtrl, COleControl)
EVENT_STOCK_CLICK()
END_EVENT_MAP()

매크로는 EVENT_STOCK_CLICK 컨트롤이 마우스 클릭을 감지할 때마다 stock Click 이벤트를 실행한다는 것을 나타냅니다. 다른 주식 이벤트의 자세한 목록은 ActiveX 컨트롤: 이벤트 문서를 참조하세요. 매크로를 사용하여 사용자 지정 이벤트를 나타낼 수도 있습니다.

이벤트 맵 매크로는 중요하지만 일반적으로 직접 삽입하지는 않습니다. 속성 창(클래스 뷰)은 이벤트 발생 함수를 이벤트와 연결하는 데 사용할 때 소스 파일에 이벤트 맵 항목을 자동으로 만들기 때문입니다. 이벤트 맵 항목을 편집하거나 추가하려는 경우 언제든지 속성 창을 사용할 수 있습니다.

이벤트 맵을 지원하기 위해 MFC는 다음 매크로를 제공합니다.

이벤트 맵 매크로

이벤트 맵 선언 및 경계

이름 설명
DECLARE_EVENT_MAP 이벤트 맵이 클래스에서 이벤트 발생 함수에 이벤트를 매핑하는 데 사용됨을 선언합니다(클래스 선언에서 사용해야 함).
BEGIN_EVENT_MAP 이벤트 맵의 정의를 시작합니다(클래스 구현에서 사용해야 합니다).
END_EVENT_MAP 이벤트 맵의 정의를 종료합니다(클래스 구현에서 사용해야 합니다).

이벤트 매핑 매크로

이름 설명
EVENT_CUSTOM 지정된 이벤트를 발생시킬 이벤트 발생 함수를 나타냅니다.
EVENT_CUSTOM_ID 지정된 디스패치 ID를 사용하여 지정된 이벤트를 발생시킬 이벤트 발생 함수를 나타냅니다.

메시지 매핑 매크로

이름 설명
ON_OLEVERB OLE 컨트롤에서 처리하는 사용자 지정 동사를 나타냅니다.
ON_STDOLEVERB OLE 컨트롤의 표준 동사 매핑을 재정의합니다.

DECLARE_EVENT_MAP

프로그램에서 파생된 각 COleControl클래스는 컨트롤에서 발생하는 이벤트를 지정하는 이벤트 맵을 제공할 수 있습니다.

DECLARE_EVENT_MAP()

설명

클래스 선언의 끝에 DECLARE_EVENT_MAP 매크로를 사용합니다. 그런 다음 클래스의 멤버 함수를 정의하는 .cpp 파일에서 BEGIN_EVENT_MAP 매크로, 컨트롤의 각 이벤트에 대한 매크로 항목 및 END_EVENT_MAP 매크로를 사용하여 이벤트 목록의 끝을 선언합니다.

이벤트 맵에 대한 자세한 내용은 ActiveX 컨트롤: 이벤트 문서를 참조하세요.

요구 사항

헤더 afxctl.h

BEGIN_EVENT_MAP

이벤트 맵의 정의를 시작합니다.

BEGIN_EVENT_MAP(theClass,  baseClass)

매개 변수

theClass
이벤트 맵이 있는 컨트롤 클래스의 이름을 지정합니다.

baseClass
TheClass의 기본 클래스 이름을 지정합니다.

설명

클래스의 멤버 함수를 정의하는 구현(.cpp) 파일에서 BEGIN_EVENT_MAP 매크로를 사용하여 이벤트 맵을 시작한 다음 각 이벤트에 대한 매크로 항목을 추가하고 END_EVENT_MAP 매크로를 사용하여 이벤트 맵을 완료합니다.

이벤트 맵 및 BEGIN_EVENT_MAP 매크로에 대한 자세한 내용은 ActiveX 컨트롤: 이벤트 문서를 참조하세요.

요구 사항

헤더 afxctl.h

END_EVENT_MAP

END_EVENT_MAP 매크로를 사용하여 이벤트 맵의 정의를 종료합니다.

END_EVENT_MAP()

요구 사항

헤더 afxctl.h

EVENT_CUSTOM

사용자 지정 이벤트에 대한 이벤트 맵 항목을 정의합니다.

EVENT_CUSTOM(pszName, pfnFire,  vtsParams)

매개 변수

pszName
이벤트의 이름입니다.

pfnFire
이벤트 발생 함수의 이름입니다.

vtsParams
함수의 매개 변수 목록을 지정하는 하나 이상의 상수에 대한 공백으로 구분된 목록입니다.

설명

vtsParams 매개 변수는 상수에서 VTS_ 공백으로 구분된 값 목록입니다. 공백(쉼표 아님)으로 구분된 이러한 값 중 하나 이상이 함수의 매개 변수 목록을 지정합니다. 예시:

VTS_COLOR VTS_FONT

는 RGB 색 값을 나타내는 32비트 정수가 포함된 목록과 OLE 글꼴 개체의 인터페이스에 IFontDisp 대한 포인터를 지정합니다.

VTS_ 상수와 그 의미는 다음과 같습니다.

기호 매개 변수 형식
VTS_I2 short
VTS_I4 long
VTS_R4 float
VTS_R8 double
VTS_COLOR OLE_COLOR
VTS_CY 통화
VTS_DATE DATE
VTS_BSTR constChar*
VTS_DISPATCH LPDISPATCH
VTS_FONT IFontDispatch*
VTS_HANDLE HANDLE
VTS_SCODE SCODE
VTS_BOOL BOOL
VTS_VARIANT const VARIANT*
VTS_PVARIANT VARIANT*
VTS_UNKNOWN LPUNKNOWN
VTS_OPTEXCLUSIVE OLE_OPTEXCLUSIVE
VTS_PICTURE IPictureDisp*
VTS_TRISTATE OLE_TRISTATE
VTS_XPOS_PIXELS OLE_XPOS_PIXELS
VTS_YPOS_PIXELS OLE_YPOS_PIXELS
VTS_XSIZE_PIXELS OLE_XSIZE_PIXELS
VTS_YSIZE_PIXELS OLE_YSIZE_PIXELS
TS_XPOS_HIMETRIC OLE_XPOS_HIMETRIC
VTS_YPOS_HIMETRIC OLE_YPOS_HIMETRIC
VTS_XSIZE_HIMETRIC OLE_XSIZE_HIMETRIC
VTS_YSIZE_HIMETRIC OLE_YSIZE_HIMETRIC

참고 항목

변형 데이터 상수에 대한 포인터를 제공하는 VTS_FONT 및 VTS_PICTURE 제외하고 모든 변형 형식에 대해 추가 변형 상수가 정의되었습니다. 이러한 상수는 규칙을 사용하여 VTS_Pconstantname 명명됩니다. 예를 들어 VTS_PCOLOR VTS_COLOR 상수에 대한 포인터입니다.

요구 사항

헤더 afxctl.h

EVENT_CUSTOM_ID

dispid에서 지정한 디스패치 ID에 속하는 사용자 지정 이벤트에 대한 이벤트 발생 함수를 정의합니다.

EVENT_CUSTOM_ID(
    pszName,
    dispid,
    pfnFire,
    vtsParams)

매개 변수

pszName
이벤트의 이름입니다.

dispid
이벤트를 발생 시에 컨트롤에서 사용 하는 디스패치 ID입니다.

pfnFire
이벤트 발생 함수의 이름입니다.

vtsParams
이벤트가 발생할 때 컨트롤 컨테이너에 전달되는 매개 변수의 변수 목록입니다.

설명

vtsParams 인수는 상수에서 VTS_ 공백으로 구분된 값 목록입니다. 이러한 값 중 하나 이상이 쉼표가 아닌 공백으로 구분되어 함수의 매개 변수 목록을 지정합니다. 예시:

VTS_COLOR VTS_FONT

는 RGB 색 값을 나타내는 32비트 정수가 포함된 목록과 OLE 글꼴 개체의 인터페이스에 IFontDisp 대한 포인터를 지정합니다.

상수 목록은 VTS_ EVENT_CUSTOM 참조하세요.

요구 사항

헤더 afxctl.h

ON_OLEVERB

이 매크로는 사용자 지정 동사를 컨트롤의 특정 멤버 함수에 매핑하는 메시지 맵 항목을 정의합니다.

ON_OLEVERB(idsVerbName,  memberFxn)

매개 변수

idsVerbName
동사 이름의 문자열 리소스 ID입니다.

memberFxn
동사가 호출될 때 프레임워크에서 호출하는 함수입니다.

설명

리소스 편집기를 사용하여 문자열 테이블에 추가되는 사용자 지정 동사 이름을 만들 수 있습니다.

memberFxn함수 프로토타입은 다음과 같습니다.

BOOL memberFxn(
   LPMSG    lpMsg,
   HWND     hWndParent,
   LPCRECT  lpRect);

lpMsg, hWndParentlpRect 매개 변수의 값은 멤버 함수의 IOleObject::DoVerb 해당 매개 변수에서 가져옵니다.

요구 사항

헤더 afxole.h

ON_STDOLEVERB

이 매크로를 사용하여 표준 동사의 기본 동작을 재정의합니다.

ON_STDOLEVERB(iVerb, memberFxn)

매개 변수

iVerb
재정의되는 동사의 표준 동사 인덱스입니다.

memberFxn
동사가 호출될 때 프레임워크에서 호출하는 함수입니다.

설명

표준 동사 인덱스는 다음 작업 OLEIVERB_형식입니다. OLEIVERB_SHOW, OLEIVERB_HIDE 및 OLEIVERB_UIACTIVATE 표준 동사의 몇 가지 예입니다.

memberFxn 매개 변수로 사용할 함수 프로토타입에 대한 설명은 ON_OLEVERB 참조하세요.

요구 사항

헤더 afxole.h

참고 항목

매크로 및 전역