次の方法で共有


CHAIN_MSG_MAP

メッセージ マップにエントリを定義します。

CHAIN_MSG_MAP( theChainClass )

パラメーター

  • theChainClass
    [入力] メッセージ マップを含んでいる基本クラスの名前。

解説

CHAIN_MSG_MAP は、基本クラスの既定のメッセージ マップにメッセージを送ります。既定のメッセージ マップは、BEGIN_MSG_MAP で宣言しておきます。 基本クラスの代替メッセージ マップにメッセージを送るには、CHAIN_MSG_MAP_ALT を使用します。代替メッセージ マップは、ALT_MSG_MAP で宣言しておきます。

注意

メッセージ マップは、常に BEGIN_MSG_MAP で開始します。 開始した後、ALT_MSG_MAP を使って、さらに代替メッセージ マップを宣言することもできます。 END_MSG_MAP マクロは、メッセージ マップの終了位置を示します。 どのメッセージ マップにも、BEGIN_MSG_MAPEND_MSG_MAP のインスタンスが 1 つずつ生成されている必要があります。

ATL でのメッセージ マップの使い方の詳細については、「メッセージ マップ」を参照してください。

使用例

class CMyExtClass : public CMyBaseClass
{
public:
  BEGIN_MSG_MAP(CMyExtClass)
     MESSAGE_HANDLER(WM_PAINT, OnPaint)
     // chain to default message map in CMyBaseClass
     CHAIN_MSG_MAP(CMyBaseClass)
  ALT_MSG_MAP(1)
     // chain to first alternative message map in CMyBaseClass
     CHAIN_MSG_MAP(CMyBaseClass)
  ALT_MSG_MAP(2)
     MESSAGE_HANDLER(WM_CHAR, OnChar)
     // chain to alternate message map in CMyBaseClass
     CHAIN_MSG_MAP_ALT(CMyBaseClass, 1)
  END_MSG_MAP()

   LRESULT OnPaint(UINT /*nMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, 
      BOOL& /*bHandled*/)
   {
      return 0;   
   }

   LRESULT OnChar(UINT /*nMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, 
      BOOL& /*bHandled*/)
   {
      return 0;   
   }
};

このコードについて説明します。

  • ウィンドウ プロシージャが CMyClass の既定のメッセージ マップを使用し、OnPaint がメッセージを処理しない場合、メッセージは CMyBaseClass の既定のメッセージ マップに送られ、処理されます。

  • ウィンドウ プロシージャが CMyClass の最初の代替メッセージ マップを使用している場合、メッセージはすべて CMyBaseClass の既定のメッセージ マップに送られます。

  • ウィンドウ プロシージャが CMyClass の 2 番目の代替メッセージ マップを使用し、OnChar がメッセージを処理しない場合、メッセージは CMyBaseClass の指定された代替メッセージ マップに送られます。 CMyBaseClass は、ALT_MSG_MAP(1) を使用してこのメッセージ マップを宣言しておく必要があります。

必要条件

**ヘッダー:**atlwin.h

参照

参照

CHAIN_MSG_MAP_MEMBER

CHAIN_MSG_MAP_DYNAMIC

MESSAGE_HANDLER

その他の技術情報

メッセージ マップ マクロ (ATL)

ATL マクロ