CDynamicChain 클래스CDynamicChain Class

이 클래스는 메시지 맵의 동적 체인을 지원하는 메서드를 제공합니다.This class provides methods supporting the dynamic chaining of message maps.

중요

이 클래스와 해당 멤버는 Windows 런타임에서 실행되는 응용 프로그램에서 사용할 수 없습니다.This class and its members cannot be used in applications that execute in the Windows Runtime.

구문Syntax

class CDynamicChain

멤버Members

Public 생성자Public Constructors

속성Name DescriptionDescription
CDynamicChain::CDynamicChainCDynamicChain::CDynamicChain 생성자입니다.The constructor.
CDynamicChain::~CDynamicChainCDynamicChain::~CDynamicChain 소멸자입니다.The destructor.

Public 메서드Public Methods

속성Name DescriptionDescription
CDynamicChain::콜체인CDynamicChain::CallChain Windows 메시지를 다른 개체의 메시지 맵으로 보신다.Directs a Windows message to another object's message map.
CDynamicChain::리크체인엔트리CDynamicChain::RemoveChainEntry 컬렉션에서 메시지 맵 항목을 제거합니다.Removes a message map entry from the collection.
CDynamicChain::세트체인엔트리CDynamicChain::SetChainEntry 컬렉션에 메시지 맵 항목을 추가하거나 기존 항목을 수정합니다.Adds a message map entry to the collection or modifies an existing entry.

설명Remarks

CDynamicChain는 메시지 맵 컬렉션을 관리하여 런타임에 Windows 메시지를 다른 개체의 메시지 맵으로 지시할 수 있습니다.CDynamicChain manages a collection of message maps, enabling a Windows message to be directed, at run time, to another object's message map.

메시지 맵의 동적 연결에 대한 지원을 추가하려면 다음을 수행합니다.To add support for dynamic chaining of message maps, do the following:

  • 에서 클래스를 CDynamicChain파생합니다.Derive your class from CDynamicChain. 메시지 맵에서 CHAIN_MSG_MAP_DYNAMIC 매크로를 지정하여 다른 개체의 기본 메시지 맵에 연결합니다.In the message map, specify the CHAIN_MSG_MAP_DYNAMIC macro to chain to another object's default message map.

  • CMessageMap에서연결하려는 모든 클래스를 파생합니다.Derive every class you want to chain to from CMessageMap. CMessageMap을 사용하면 개체가 메시지 맵을 다른 개체에 노출할 수 있습니다.CMessageMap allows an object to expose its message maps to other objects.

  • 연결할 CDynamicChain::SetChainEntry 개체와 연결할 메시지 맵을 식별하기 위해 호출합니다.Call CDynamicChain::SetChainEntry to identify which object and which message map you want to chain to.

예를 들어 클래스가 다음과 같이 정의되어 있다고 가정합니다.For example, suppose your class is defined as follows:

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클라이언트는 다음을 호출합니다.The client then calls CMyWindow::SetChainEntry:

myCtl.SetChainEntry(1313, &chainedObj);

여기서 chainedObj 연결된 개체이며 CMessageMap에서 파생된 클래스의 인스턴스입니다.where chainedObj is the chained object and is an instance of a class derived from CMessageMap. myCtl 이제 OnPaint 처리되지 OnSetFocus않은 메시지를 받으면 창 프로시저가 메시지를 기본 chainedObj메시지 맵으로 지시합니다.Now, if myCtl receives a message that is not handled by OnPaint or OnSetFocus, the window procedure directs the message to chainedObj's default message map.

메시지 맵 체인에 대한 자세한 내용은 "ATL 창 클래스"의 메시지 맵을 참조하십시오.For more information about message map chaining, see Message Maps in the article "ATL Window Classes."

요구 사항Requirements

헤더: atlwin.hHeader: atlwin.h

CDynamicChain::콜체인CDynamicChain::CallChain

Windows 메시지를 다른 개체의 메시지 맵으로 보신다.Directs the Windows message to another object's message map.

BOOL CallChain(
    DWORD dwChainID,
    HWND hWnd,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam,
    LRESULT& lResult);

매개 변수Parameters

dwChainIDdwChainID
【인】 연결된 개체 및 해당 메시지 맵과 연결된 고유 식별자입니다.[in] The unique identifier associated with the chained object and its message map.

HwndhWnd
【인】 메시지를 받는 창에 대한 핸들입니다.[in] The handle to the window receiving the message.

uMsguMsg
【인】 창으로 전송된 메시지입니다.[in] The message sent to the window.

wParamwParam
【인】 추가 메시지 관련 정보입니다.[in] Additional message-specific information.

lParamlParam
【인】 추가 메시지 관련 정보입니다.[in] Additional message-specific information.

l결과lResult
【아웃】 메시지 처리의 결과입니다.[out] The result of the message processing.

Return ValueReturn Value

TRUE 메시지가 완전히 처리되는 경우; 그렇지 않으면 false입니다.TRUE if the message is fully processed; otherwise, FALSE.

설명Remarks

창 프로시저를 호출하려면 CallChain메시지 맵에서 CHAIN_MSG_MAP_DYNAMIC 매크로를 지정해야 합니다.For the window procedure to invoke CallChain, you must specify the CHAIN_MSG_MAP_DYNAMIC macro in your message map. 예를 들어 CDynamicChain 개요를 참조하십시오.For an example, see the CDynamicChain overview.

CallChaindwChainID 값을 개체 및 메시지 맵과 연결하려면 SetChainEntry에 대한 이전 호출이 필요합니다.CallChain requires a previous call to SetChainEntry to associate the dwChainID value with an object and its message map.

CDynamicChain::CDynamicChainCDynamicChain::CDynamicChain

생성자입니다.The constructor.

CDynamicChain();

CDynamicChain::~CDynamicChainCDynamicChain::~CDynamicChain

소멸자입니다.The destructor.

~CDynamicChain();

설명Remarks

할당된 모든 리소스를 해제합니다.Frees all allocated resources.

CDynamicChain::리크체인엔트리CDynamicChain::RemoveChainEntry

컬렉션에서 지정된 메시지 맵을 제거합니다.Removes the specified message map from the collection.

BOOL RemoveChainEntry(DWORD dwChainID);

매개 변수Parameters

dwChainIDdwChainID
【인】 연결된 개체 및 해당 메시지 맵과 연결된 고유 식별자입니다.[in] The unique identifier associated with the chained object and its message map. 원래 SetChainEntry에 대한 호출을 통해 이 값을 정의합니다.You originally define this value through a call to SetChainEntry.

Return ValueReturn Value

TRUE 메시지 맵이 컬렉션에서 성공적으로 제거된 경우TRUE if the message map is successfully removed from the collection. 그렇지 않으면 FALSE입니다.Otherwise, FALSE.

CDynamicChain::세트체인엔트리CDynamicChain::SetChainEntry

지정된 메시지 맵을 컬렉션에 추가합니다.Adds the specified message map to the collection.

BOOL SetChainEntry(
    DWORD dwChainID,
    CMessageMap* pObject,
    DWORD dwMsgMapID = 0);

매개 변수Parameters

dwChainIDdwChainID
【인】 연결된 개체 및 해당 메시지 맵과 연결된 고유 식별자입니다.[in] The unique identifier associated with the chained object and its message map.

pObjectpObject
【인】 메시지 맵을 선언하는 연결된 개체에 대한 포인터입니다.[in] A pointer to the chained object declaring the message map. 이 개체는 CMessageMap에서 파생되어야 합니다.This object must derive from CMessageMap.

dwMsgMapIDdwMsgMapID
【인】 체인된 개체의 메시지 맵의 식별자입니다.[in] The identifier of the message map in the chained object. 기본값은 0이며 BEGIN_MSG_MAP 선언된기본 메시지 맵을 식별합니다.The default value is 0, which identifies the default message map declared with BEGIN_MSG_MAP. ALT_MSG_MAP(msgMapID)로선언된 대체 메시지 맵을 지정하려면 을 전달합니다. msgMapIDTo specify an alternate message map declared with ALT_MSG_MAP(msgMapID), pass msgMapID.

Return ValueReturn Value

메시지 맵이 컬렉션에 성공적으로 추가된 경우 TRUE입니다.TRUE if the message map is successfully added to the collection. 그렇지 않으면 FALSE입니다.Otherwise, FALSE.

설명Remarks

dwChainID 값이 컬렉션에 이미 있는 경우 해당 관련 개체 및 메시지 맵은 각각 pObjectdwMsmapID로대체됩니다.If the dwChainID value already exists in the collection, its associated object and message map are replaced by pObject and dwMsgMapID, respectively. 그렇지 않으면 새 항목이 추가됩니다.Otherwise, a new entry is added.

참고 항목See also

크윈도우임플 클래스CWindowImpl Class
클래스 개요Class Overview