CDynamicChain 클래스
이 클래스는 메시지 맵의 동적 체인을 지원하는 메서드를 제공합니다.
Important
이 클래스와 해당 멤버는 Windows 런타임에서 실행되는 애플리케이션에서 사용할 수 없습니다.
구문
class CDynamicChain
멤버
공용 생성자
속성 | 설명 |
---|---|
CDynamicChain::CDynamicChain | 생성자입니다. |
CDynamicChain::~CDynamicChain | 소멸자입니다. |
공용 메서드
이름 | 설명 |
---|---|
CDynamicChain::CallChain | Windows 메시지를 다른 개체의 메시지 맵으로 전달합니다. |
CDynamicChain::RemoveChainEntry | 컬렉션에서 메시지 맵 항목을 제거합니다. |
CDynamicChain::SetChainEntry | 컬렉션에 메시지 맵 항목을 추가하거나 기존 항목을 수정합니다. |
설명
CDynamicChain
는 메시지 맵의 컬렉션을 관리하여 런타임에 Windows 메시지를 다른 개체의 메시지 맵으로 보낼 수 있도록 합니다.
메시지 맵의 동적 연결에 대한 지원을 추가하려면 다음을 수행합니다.
에서
CDynamicChain
클래스를 파생합니다. 메시지 맵에서 다른 개체의 기본 메시지 맵에 연결할 CHAIN_MSG_MAP_DYNAMIC 매크로를 지정합니다.CMessageMap에서 연결하려는 모든 클래스를 파생합니다.
CMessageMap
를 사용하면 개체가 메시지 맵을 다른 개체에 노출할 수 있습니다.연결할 개체 및 메시지 맵을 식별하기 위해 호출
CDynamicChain::SetChainEntry
합니다.
예를 들어 클래스가 다음과 같이 정의되어 있다고 가정합니다.
class CMyChainWnd : public CWindowImpl<CMyChainWnd>,
public CDynamicChain
{
public:
CMyChainWnd() {}
BEGIN_MSG_MAP(CMyChainWnd)
MESSAGE_HANDLER(WM_PAINT, OnPaint)
MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
// dynamically chain to the default
// message map in another object
CHAIN_MSG_MAP_DYNAMIC(1313)
// '1313' identifies the object
// and the message map that will be
// chained to. '1313' is defined
// through the SetChainEntry method
END_MSG_MAP()
LRESULT OnPaint(UINT /*nMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/,
BOOL& /*bHandled*/)
{
// Do some painting code
return 0;
}
LRESULT OnSetFocus(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/,
BOOL& /*bHandled*/)
{
return 0;
}
};
그런 다음 클라이언트는 다음을 호출합니다 CMyWindow::SetChainEntry
.
myCtl.SetChainEntry(1313, &chainedObj);
여기서 chainedObj
는 연결된 개체이며 CMessageMap
. myCtl
이제 처리 OnPaint
되지 않는 메시지를 받거나 OnSetFocus
창 프로시저에서 메시지를 '기본 메시지 맵으로 전달chainedObj
합니다.
메시지 맵 체인 에 대한 자세한 내용은 "ATL 창 클래스" 문서의 메시지 맵 을 참조하세요.
요구 사항
헤더: atlwin.h
CDynamicChain::CallChain
Windows 메시지를 다른 개체의 메시지 맵으로 전달합니다.
BOOL CallChain(
DWORD dwChainID,
HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam,
LRESULT& lResult);
매개 변수
dwChainID
[in] 연결된 개체 및 해당 메시지 맵과 연결된 고유 식별자입니다.
hWnd
[in] 메시지를 수신하는 창에 대한 핸들입니다.
uMsg
[in] 창에 보낸 메시지입니다.
wParam
[in] 추가 메시지 관련 정보입니다.
lParam
[in] 추가 메시지 관련 정보입니다.
lResult
[out] 메시지 처리의 결과입니다.
Return Value
메시지가 완전히 처리되면 TRUE입니다. 그렇지 않으면 FALSE입니다.
설명
창 프로시저를 호출 CallChain
하려면 메시지 맵에서 CHAIN_MSG_MAP_DYNAMIC 매크로를 지정해야 합니다. 예를 들어 CDynamicChain 개요를 참조하세요.
CallChain
에서는 dwChainID 값을 개체 및 해당 메시지 맵과 연결하기 위해 SetChainEntry에 대한 이전 호출이 필요합니다.
CDynamicChain::CDynamicChain
생성자입니다.
CDynamicChain();
CDynamicChain::~CDynamicChain
소멸자입니다.
~CDynamicChain();
설명
할당된 모든 리소스를 해제합니다.
CDynamicChain::RemoveChainEntry
컬렉션에서 지정된 메시지 맵을 제거합니다.
BOOL RemoveChainEntry(DWORD dwChainID);
매개 변수
dwChainID
[in] 연결된 개체 및 해당 메시지 맵과 연결된 고유 식별자입니다. 원래 SetChainEntry 호출을 통해 이 값을 정의합니다.
Return Value
메시지 맵이 컬렉션에서 성공적으로 제거된 경우 TRUE입니다. 그렇지 않으면 FALSE입니다.
CDynamicChain::SetChainEntry
지정된 메시지 맵을 컬렉션에 추가합니다.
BOOL SetChainEntry(
DWORD dwChainID,
CMessageMap* pObject,
DWORD dwMsgMapID = 0);
매개 변수
dwChainID
[in] 연결된 개체 및 해당 메시지 맵과 연결된 고유 식별자입니다.
pObject
[in] 메시지 맵을 선언하는 연결된 개체에 대한 포인터입니다. 이 개체는 CMessageMap에서 파생되어야 합니다.
dwMsgMapID
[in] 연결된 개체의 메시지 맵 식별자입니다. 기본값은 0으로, BEGIN_MSG_MAP 선언된 기본 메시지 맵을 식별합니다. ALT_MSG_MAP(msgMapID)로 선언된 대체 메시지 맵을 지정하려면 전달msgMapID
합니다.
Return Value
메시지 맵이 컬렉션에 성공적으로 추가되면 TRUE입니다. 그렇지 않으면 FALSE입니다.
설명
dwChainID 값이 컬렉션에 이미 있는 경우 연결된 개체와 메시지 맵은 각각 pObject 및 dwMsgMapID로 바뀝니다. 그렇지 않으면 새 항목이 추가됩니다.