CDynamicChain クラス
このクラスは、メッセージ マップの動的チェーンをサポートするメソッドを提供します。
重要
このクラスとそのメンバーは、Windows ランタイムで実行するアプリケーションで使用することはできません。
構文
class CDynamicChain
メンバー
パブリック コンストラクター
名前 | 説明 |
---|---|
CDynamicChain::CDynamicChain | コンストラクター。 |
CDynamicChain::~CDynamicChain | デストラクター。 |
パブリック メソッド
名前 | 説明 |
---|---|
CDynamicChain::CallChain | 別のオブジェクトのメッセージ マップに Windows メッセージを転送します。 |
CDynamicChain::RemoveChainEntry | コレクションからメッセージ マップ エントリを削除します。 |
CDynamicChain::SetChainEntry | コレクションにメッセージ マップ エントリを追加するか、既存のエントリを変更します。 |
解説
CDynamicChain
によりメッセージ マップのコレクションが管理され、実行時に別のオブジェクトのメッセージ マップにメッセージを転送できます。
メッセージ マップの動的チェーンのサポートを追加するには、次の手順を実行します。
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
から派生したクラスのインスタンスです。 ここで、OnPaint
または OnSetFocus
によって処理されないメッセージを myCtl
が受信した場合、ウィンドウ プロシージャによって、メッセージが chainedObj
の既定のメッセージ マップに転送されます。
メッセージ マップのチェーンの詳細については、"ATL ウィンドウ クラス" のメッセージ マップに関するページを参照してください。
要件
ヘッダー: atlwin.h
CDynamicChain::CallChain
別のオブジェクトのメッセージ マップに Windows メッセージを転送します。
BOOL CallChain(
DWORD dwChainID,
HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam,
LRESULT& lResult);
パラメーター
dwChainID
[入力] チェーン オブジェクトとそのメッセージ マップに関連付けられている一意の識別子。
hWnd
[入力] メッセージを受け取るウィンドウへのハンドル。
uMsg
[入力] ウィンドウに送信されたメッセージ。
wParam
[入力] メッセージ固有の追加情報。
lParam
[入力] メッセージ固有の追加情報。
lResult
[出力] メッセージ処理の結果。
戻り値
メッセージが完全に処理される場合は TRUE。それ以外の場合は FALSE。
解説
ウィンドウ プロシージャで CallChain
を呼び出す場合は、メッセージマップで CHAIN_MSG_MAP_DYNAMIC を指定する必要があります。 例については、CDynamicChain の概要を参照してください。
CallChain
には、dwChainID 値をオブジェクトとそのメッセージ マップに関連付ける SetChainEntry の以前の呼び出しが必要です。
CDynamicChain::CDynamicChain
コンストラクター。
CDynamicChain();
CDynamicChain::~CDynamicChain
デストラクター。
~CDynamicChain();
解説
割り当てられているすべてのリソースを解放します。
CDynamicChain::RemoveChainEntry
コレクションから指定されたメッセージ マップを削除します。
BOOL RemoveChainEntry(DWORD dwChainID);
パラメーター
dwChainID
[入力] チェーン オブジェクトとそのメッセージ マップに関連付けられている一意の識別子。 はじめに、SetChainEntry への呼び出しを使用してこの値を定義します。
戻り値
メッセージ マップがコレクションから正常に削除される場合は TRUE。 それ以外の場合は FALSE。
CDynamicChain::SetChainEntry
指定したメッセージ マップをコレクションに追加します。
BOOL SetChainEntry(
DWORD dwChainID,
CMessageMap* pObject,
DWORD dwMsgMapID = 0);
パラメーター
dwChainID
[入力] チェーン オブジェクトとそのメッセージ マップに関連付けられている一意の識別子。
pObject
[入力] メッセージ マップを宣言するチェーン オブジェクトへのポインター。 このオブジェクトは、CMessageMap から派生している必要があります。
dwMsgMapID
[入力] チェーン オブジェクト内のメッセージ マップの識別子。 既定値は 0 で、BEGIN_MSG_MAP で宣言された既定のメッセージ マップを識別します。 ALT_MSG_MAP(msgMapID) で宣言された代替メッセージ マップを使用するには、msgMapID
を渡します。
戻り値
メッセージ マップがコレクションに正常に追加される場合は TRUE。 それ以外の場合は FALSE。
解説
dwChainID 値がコレクションに既に存在する場合、これに関連付けられているオブジェクトとメッセージ マップは、それぞれ pObject と dwMsgMapID に置き換えられます。 それ以外の場合は、新しいエントリが追加されます。