다음을 통해 공유


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 값이 컬렉션에 이미 있는 경우 연결된 개체와 메시지 맵은 각각 pObjectdwMsgMapID바뀝니다. 그렇지 않으면 새 항목이 추가됩니다.

참고 항목

CWindowImpl 클래스
클래스 개요