次の方法で共有


BEGIN_MSG_MAP

既定のメッセージ マップの開始位置を示します。

BEGIN_MSG_MAP( theClass )

パラメーター

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

解説

CWindowImpl::WindowProc は、既定のメッセージ マップを使用して、ウィンドウに送られたメッセージを処理します。 メッセージ マップは、適切なハンドラー関数または別のメッセージ マップにメッセージを送ります。

次のマクロは、メッセージをハンドラー関数に割り当てます。 このハンドラー関数は、theClass に定義する必要があります。

マクロ

説明

MESSAGE_HANDLER

Windows メッセージをハンドラー関数に割り当てます。

MESSAGE_RANGE_HANDLER

連続した範囲の Windows メッセージをハンドラー関数に割り当てます。

COMMAND_HANDLER

通知コードと、メニュー項目、コントロール、またはアクセラレータの ID に基づいて、WM_COMMAND メッセージをハンドラー関数に割り当てます。

COMMAND_ID_HANDLER

メニュー項目、コントロール、またはアクセラレータの ID に基づいて、WM_COMMAND メッセージをハンドラー関数に割り当てます。

COMMAND_CODE_HANDLER

通知コードに基づいて、WM_COMMAND メッセージをハンドラー関数に割り当てます。

COMMAND_RANGE_HANDLER

メニュー項目、コントロール、またはアクセラレータの ID に基づいて、連続した範囲の WM_COMMAND メッセージをハンドラー関数に割り当てます。

NOTIFY_HANDLER

通知コードとコントロール ID に基づいて、WM_NOTIFY メッセージをハンドラー関数に割り当てます。

NOTIFY_ID_HANDLER

コントロール ID に基づいて、WM_NOTIFY メッセージをハンドラー関数に割り当てます。

NOTIFY_CODE_HANDLER

通知コードに基づいて、WM_NOTIFY メッセージをハンドラー関数に割り当てます。

NOTIFY_RANGE_HANDLER

コントロール ID に基づいて、連続した範囲の WM_NOTIFY メッセージをハンドラー関数に割り当てます。

次のマクロは、メッセージを別のメッセージ マップに送ります。 この処理は "チェイン" と呼ばれます。

マクロ

説明

CHAIN_MSG_MAP

基本クラスの既定のメッセージ マップにチェインします。

CHAIN_MSG_MAP_MEMBER

クラスのデータ メンバーの既定のメッセージ マップにチェインします。

CHAIN_MSG_MAP_ALT

基本クラスの代替メッセージ マップにチェインします。

CHAIN_MSG_MAP_ALT_MEMBER

クラスのデータ メンバーの代替メッセージ マップにチェインします。

CHAIN_MSG_MAP_DYNAMIC

実行時に別のクラスの既定のメッセージ マップにチェインします。

次のマクロは、親ウィンドウから "返送された" メッセージを送ります。 たとえば、通常、コントロールは親ウィンドウに処理のための通知メッセージを送りますが、親ウィンドウはメッセージをコントロールに返送できます。

マクロ

説明

REFLECTED_COMMAND_HANDLER

通知コードと、メニュー項目、コントロール、またはアクセラレータの ID に基づいて、返送された WM_COMMAND メッセージをハンドラー関数に割り当てます。

REFLECTED_COMMAND_ID_HANDLER

メニュー項目、コントロール、またはアクセラレータの ID に基づいて、返送された WM_COMMAND メッセージをハンドラー関数に割り当てます。

REFLECTED_COMMAND_CODE_HANDLER

通知コードに基づいて、返送された WM_COMMAND メッセージをハンドラー関数に割り当てます。

REFLECTED_COMMAND_RANGE_HANDLER

連続した範囲のコントロール ID に基づいて、返送された WM_COMMAND メッセージをハンドラー関数に割り当てます。

REFLECTED_COMMAND_RANGE_CODE_HANDLER

通知コードと、連続した範囲のコントロール ID に基づいて、返送された WM_COMMAND メッセージをハンドラー関数に割り当てます。

REFLECTED_NOTIFY_HANDLER

通知コードとコントロール ID に基づいて、返送された WM_NOTIFY メッセージをハンドラー関数に割り当てます。

REFLECTED_NOTIFY_ID_HANDLER

コントロール ID に基づいて、返送された WM_NOTIFY メッセージをハンドラー関数に割り当てます。

REFLECTED_NOTIFY_CODE_HANDLER

通知コードに基づいて、返送された WM_NOTIFY メッセージをハンドラー関数に割り当てます。

REFLECTED_NOTIFY_RANGE_HANDLER

連続した範囲のコントロール ID に基づいて、返送された WM_NOTIFY メッセージをハンドラー関数に割り当てます。

REFLECTED_NOTIFY_RANGE_CODE_HANDLER

通知コードおよび連続した範囲のコントロール ID に基づいて、返送された WM_NOTIFY メッセージをハンドラー関数に割り当てます。

使用例

class CMyExtWindow : public CMyBaseWindow
{
public:
   BEGIN_MSG_MAP(CMyExtWindow)
      MESSAGE_HANDLER(WM_PAINT, OnPaint)
      MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
      CHAIN_MSG_MAP(CMyBaseWindow)
   END_MSG_MAP()

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

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

CMyExtWindow オブジェクトは、WM_PAINT メッセージを受け取ると、実際の処理のためにそのメッセージを CMyExtWindow::OnPaint に転送します。 メッセージは、ここで実際に処理され、さらなる処理が必要な場合は、CMyBaseWindow の既定のメッセージ マップに送られます。

既定のメッセージ マップのほか、ALT_MSG_MAP マクロを使用して代替メッセージ マップを定義することもできます。 メッセージ マップは、常に BEGIN_MSG_MAP で開始します。 メッセージ マップの開始後、さらに代替メッセージ マップを宣言できます。 次の例は、既定のメッセージ マップと 1 つの代替メッセージ マップを示しています。各メッセージ マップには、1 つのハンドラー関数が含まれています。

BEGIN_MSG_MAP(CMyOneAltClass)
   MESSAGE_HANDLER(WM_PAINT, OnPaint)
ALT_MSG_MAP(1)
   MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
END_MSG_MAP()

次の例は、2 つの代替メッセージ マップを示しています。 既定のメッセージ マップは空です。

BEGIN_MSG_MAP(CMyClass)
ALT_MSG_MAP(1)
   MESSAGE_HANDLER(WM_PAINT, OnPaint)
   MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
ALT_MSG_MAP(2)
   MESSAGE_HANDLER(WM_CREATE, OnCreate)
END_MSG_MAP()

END_MSG_MAP マクロは、メッセージ マップの終了位置を示します。 BEGIN_MSG_MAPEND_MSG_MAP のインスタンスは、常に 1 つずつ存在することに注意してください。

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

必要条件

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

参照

参照

CMessageMap クラス

CDynamicChain クラス

その他の技術情報

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

ATL マクロ