CDynamicChain 類別
這個類別會提供支援動態繫結訊息對應的方法。
重要
這個類別和其成員不能用於 Windows 執行階段執行的應用程式。
class CDynamicChain
Members
公用建構函式
名稱 |
描述 |
---|---|
建構函式。 |
|
解構函式。 |
公用方法
名稱 |
描述 |
---|---|
指示視窗訊息至另一個物件的訊息對應。 |
|
從集合中移除的訊息對應項目。 |
|
加入訊息對應項目加入至集合或修改現有的項目。 |
備註
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