次の方法で共有


BEGIN_MSG_MAP

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

BEGIN_MSG_MAP( theClass )

パラメーター

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

解説

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

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

マクロ

説明

MESSAGE_HANDLER

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

MESSAGE_RANGE_HANDLER

ハンドラー関数に Windows メッセージの連続する範囲をマップします。

COMMAND_HANDLER

メニュー項目、コントロール、またはアクセラレータの通知コードと識別子に基づいてハンドラー関数に 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

メニュー項目、コントロール、またはアクセラレータの通知コードと識別子に基づいてハンドラー関数に 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 に送られます。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 にメッセージ マップを使用する方法の詳細については、[メッセージ マップ]を参照してください。

必要条件

Header: atlwin.h

参照

関連項目

CMessageMap クラス

CDynamicChain クラス

その他の技術情報

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

ATL マクロ