次の方法で共有


CDynamicChain クラス

このクラスには、メッセージ マップの動的チェインをサポートするメソッドが用意されています。

重要 : 重要

このクラスおよびメンバーは、Windows のランタイムで実行するアプリケーションで使用することはできません。

class CDynamicChain

メンバー

kxaxdc7s.collapse_all(ja-jp,VS.110).gifパブリック コンストラクター

名前

説明

CDynamicChain::CDynamicChain

コンストラクターです。

CDynamicChain::~CDynamicChain

デストラクターです。

kxaxdc7s.collapse_all(ja-jp,VS.110).gifパブリック メソッド

名前

説明

CDynamicChain::CallChain

別のオブジェクトのメッセージ マップに Windows メッセージを表示します。

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 クラスの概要