共用方式為


CDynamicChain 類別

這個類別會提供支援動態繫結訊息對應的方法。

重要

這個類別和其成員不能用於 Windows 執行階段執行的應用程式。

class CDynamicChain

Members

kxaxdc7s.collapse_all(zh-tw,VS.110).gif公用建構函式

名稱

描述

CDynamicChain::CDynamicChain

建構函式。

CDynamicChain::~CDynamicChain

解構函式。

kxaxdc7s.collapse_all(zh-tw,VS.110).gif公用方法

名稱

描述

CDynamicChain::CallChain

指示視窗訊息至另一個物件的訊息對應。

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 視窗類別上」。

需求

Header: atlwin.h

請參閱

參考

CWindowImpl 類別

其他資源

ATL 類別概觀