메시지 맵

메시지 맵에 특정 메시지, 명령, 또는 알림 처리기 함수에 연결합니다. ATL의 매크로 지도 하는 메시지를 사용 하 여 창에 대 한 메시지 맵을 지정할 수 있습니다. CWindowImpl, CDialogImpl, 그리고 CContainedWindow 창 프로시저 직접 메시지 맵을 창 메시지。

메시지 처리기 함수 형식의 추가 인수를 허용 BOOLamp; . 이 인수 나타냅니다 여부는 메시지를 처리 하 고로 설정 TRUE 기본적으로. 처리기 함수에 인수를 다음 설정할 수 FALSE 그것은 메시지를 처리 하지가 나타냅니다. 이 경우 ATL 메시지 맵에 추가 처리기 함수에 대 한 보고를 계속 됩니다. 이 인수를 설정 하 여 FALSE , 첫 번째 메시지에 응답에서 일부 작업을 수행 하 고 다음 기본 처리 또는 메시지 처리 완료 다른 처리기 함수를 허용(&A)。

ATL 있습니다 체인 메시지 지도 하는 다른 클래스에 정의 된 메시지 맵을 처리 하는 메시지를 보냅니다. 예를 들어, 일반적인 메시지 모든 창 클래스 체인에 대 한 균일 한 동작을 제공 하는 별도 클래스에 처리를 구현할 수 있습니다. 기본 클래스 또는 클래스의 데이터 멤버 체인 수 있습니다.

ATL 지원 동적 체인 런타임에 다른 개체의 메시지 맵에 체인을 수 있는. 동적 체인을 구현 하기 위해 CDynamicChain에서 클래스를 파생 해야 합니다. 그런 다음 귀하의 메시지 맵에 CHAIN_MSG_MAP_DYNAMIC 매크로 선언 합니다. CHAIN_MSG_MAP_DYNAMIC 체인은 메시지 맵 개체를 식별 하는 고유 번호가 필요 합니다. CDynamicChain::SetChainEntry 에 대 한 호출을 통해이 고유한 값을 정의 해야 합니다.

체인 수 있습니다 메시지 맵을 선언 하는 클래스 CMessageMap에서 파생 되는 클래스를 제공 합니다. CMessageMap 개체를를 다른 개체에는 메시지 맵을 노출 수 있습니다. CWindowImpl 이미 CMessageMap 에서 파생 된 참고。

마지막으로, ATL ALT_MSG_MAP 매크로 사용 하 여 선언 하는 대체 메시지 맵을 지원 합니다. 각 대체 메시지 맵은 ALT_MSG_MAP전달 고유 번호로 식별 됩니다. 다른 메시지를 사용 하 여 지도, 한 지도에서 여러 windows 메시지를 처리할 수 있습니다. 참고 기본적으로 CWindowImpl 대체 메시지 맵을 사용 하지 않습니다. 이 지원 기능을 추가 하려면 CWindowImpl WindowProc 메서드 재정의-클래스를 파생 하 고 메시지 맵 식별자를 사용 하 여 ProcessWindowMessage 를 호출。

Index