CDynamicChain クラス
このクラスには、メッセージ マップの動的チェインをサポートするメソッドが用意されています。
重要 |
---|
このクラスおよびメンバーは、Windows のランタイムで実行するアプリケーションで使用することはできません。 |
class CDynamicChain
メンバー
パブリック コンストラクター
名前 |
説明 |
---|---|
コンストラクターです。 |
|
デストラクターです。 |
パブリック メソッド
名前 |
説明 |
---|---|
別のオブジェクトのメッセージ マップに Windows メッセージを表示します。 |
|
コレクションからメッセージ マップのエントリを削除します。 |
|
メッセージ マップのエントリをコレクションに追加するか、既存のエントリを変更します。 |
解説
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