IDispEventImpl 지원

템플릿 클래스 IDispEventImpl ATL COM 개체의 연결 지점에 대 한 지원을 제공 하기 위해 사용할 수 있습니다. 연결 지점 COM 개체를를 외부 COM 개체에서 발생 하는 이벤트를 처리할 수 있습니다. 이러한 연결 지점이 COM 개체에서 제공 하는 이벤트 싱크 맵을 함께 매핑됩니다.

연결 지점 또는 COM 개체에 대 한 포인트를 제대로 구현 하려면 다음 단계를 완료 해야 합니다.:

이 절차에서는 당신은 것입니다 수정만의 헤더 파일 (.h) COM 클래스。

형식 라이브러리 가져오기

각 외부 개체 처리 하려는 이벤트에 대 한 형식 라이브러리를 가져와야 합니다. 이 단계는 처리 될 수 있는 이벤트를 정의 하 고 이벤트 싱크 맵을 선언할 때 사용 되는 정보를 제공 합니다. 이렇게 하려면 # import 지시문을 사용할 수 있습니다. 필요한 # import 지시문 줄을 추가 합니다 당신은 지 각 디스패치 인터페이스에 대 한 COM 클래스의 헤더 파일 (.h)。

다음 예제에서는 외부 COM 서버의 형식 라이브러리를 가져옵니다 ( MyServer ):

 # import "D:\MyServer.dll" raw_interfaces_only, no_namespace, named_guids

메모nbsp;??각 외부 디스패치 인터페이스를 지 원하는 것에 대 한 별도 # import 문이 있어야 합니다(&N).

IDispEventImpl 인터페이스 선언

각 디스패치 인터페이스의 형식 라이브러리를 가져온 각 외부 디스패치 인터페이스에 대 한 별도 IDispEventImpl 인터페이스 선언 해야 합니다. 각 외부 개체에 대 한 IDispEventImpl 인터페이스 선언을 추가 하 여 COM 클래스의 선언을 수정 합니다. 매개 변수에 자세한 내용은 다음 웹 사이트를 참조 하십시오. IDispEventImpl。

사용자 정의 대 한 두 연결 지점을 선언 하는 코드의 다음 줄에서는 IExtEvents1 및 IExtEvents2 클래스에 의해 구현 되는 COM 개체에 대 한 인터페이스CMyObj:

공용 IDispEventImpllt; 0, CMyObj, 및 DIID__IExtEvents1,
 ?? & LIBID_EXTEVENTS1Lib, 1, 0 >,
공공 IDispEventImpl < 1, CMyObj, 및 DIID__IExtEvents2,
 ?? & LIBID_EXTEVENTS2Lib, 1, 0 & gt

이벤트 싱크 맵을 선언

적절 한 함수에 의해 처리 이벤트 알림에 대 한 순서로 올바른 처리기로 각 이벤트 COM 개체에 라우팅해야 합니다. 이 이벤트 싱크 맵을 선언에 의해 이루어집니다.

ATL에는 몇 가지 매크로, BEGIN_SINK_MAP, END_SINK_MAP및 SINK_ENTRY이 매핑을 쉽게 제공 합니다. 표준 형식은 다음과 같습니다.:

BEGIN_SINK_MAP(comClass)
 nbsp; SINK_ENTRY (id, dispid, func)
... //additional 외부 이벤트 항목
END_SINK_MAP()(&N)

다음 예제에서는 두 명의 이벤트 처리기와 이벤트 싱크 맵을 선언합니다:

BEGIN_SINK_MAP(CMyObj)
   SINK_ENTRY (0, Events1, OnClick1)
   SINK_ENTRY (0, Events2, OnClick2)
END_SINK_MAP()

구현이 거의 완료 되었습니다. 마지막 단계는 우려를 자문 하 고 외부 인터페이스의 unadvising。

상담 및 IDispEventImpl 인터페이스 Unadvising

마지막 단계는 적절 한 시간에 조언 (또는 unadvise) 모든 연결 지점 메서드를 구현 하는 것입니다. 외부 클라이언트와 개체 사이의 통신 자리를 차지할 수 전에이 자문을 수행 되어야 합니다. 개체가 표시 되기 전에 나가는 인터페이스에 대 한 개체에서 지 원하는 각 외부 디스패치 인터페이스 쿼리 됩니다. 연결이 설정 되 고 나가는 인터페이스에 대 한 참조는 컨트롤에서 이벤트를 처리 하는 데 사용 합니다. 이 절차는 라고 "조언."

개체가 외부 인터페이스 완료 나가는 인터페이스 알려야 COM 개체에서 더 이상 사용 합니다. 이 과정 라고 "unadvising."

COM 개체의 독특한 자연의 때문에이 절차가 다릅니다 세부 실행 구현 사이. 이러한 내용은이 항목의 범위를 넘어 고 해결 되지。

Index