BEGIN_MSG_MAP
更新 : 2007 年 11 月
既定のメッセージ マップの開始位置を示します。
BEGIN_MSG_MAP( theClass )
パラメータ
- theClass
[入力] メッセージ マップを含んでいるクラスの名前。
解説
CWindowImpl::WindowProc は、既定のメッセージ マップを使用して、ウィンドウに送られたメッセージを処理します。メッセージ マップは、適切なハンドラ関数または別のメッセージ マップにメッセージを送ります。
次のマクロは、メッセージをハンドラ関数に割り当てます。このハンドラ関数は、theClass に定義する必要があります。
マクロ |
説明 |
---|---|
Windows メッセージをハンドラ関数に割り当てます。 |
|
連続した範囲の Windows メッセージをハンドラ関数に割り当てます。 |
|
通知コードと、メニュー項目、コントロール、またはアクセラレータの ID に基づいて、WM_COMMAND メッセージをハンドラ関数に割り当てます。 |
|
メニュー項目、コントロール、またはアクセラレータの ID に基づいて、WM_COMMAND メッセージをハンドラ関数に割り当てます。 |
|
通知コードに基づいて、WM_COMMAND メッセージをハンドラ関数に割り当てます。 |
|
メニュー項目、コントロール、またはアクセラレータの ID に基づいて、連続した範囲の WM_COMMAND メッセージをハンドラ関数に割り当てます。 |
|
通知コードとコントロール ID に基づいて、WM_NOTIFY メッセージをハンドラ関数に割り当てます。 |
|
コントロール ID に基づいて、WM_NOTIFY メッセージをハンドラ関数に割り当てます。 |
|
通知コードに基づいて、WM_NOTIFY メッセージをハンドラ関数に割り当てます。 |
|
コントロール ID に基づいて、連続した範囲の WM_NOTIFY メッセージをハンドラ関数に割り当てます。 |
次のマクロは、メッセージを別のメッセージ マップに送ります。この処理は "チェイン" と呼ばれます。
マクロ |
説明 |
---|---|
基本クラスの既定のメッセージ マップにチェインします。 |
|
クラスのデータ メンバの既定のメッセージ マップにチェインします。 |
|
基本クラスの代替メッセージ マップにチェインします。 |
|
クラスのデータ メンバの代替メッセージ マップにチェインします。 |
|
実行時に別のクラスの既定のメッセージ マップにチェインします。 |
次のマクロは、親ウィンドウから "返送された" メッセージを送ります。たとえば、通常、コントロールは親ウィンドウに処理のための通知メッセージを送りますが、親ウィンドウはメッセージをコントロールに返送できます。
マクロ |
説明 |
---|---|
通知コードと、メニュー項目、コントロール、またはアクセラレータの ID に基づいて、返送された WM_COMMAND メッセージをハンドラ関数に割り当てます。 |
|
メニュー項目、コントロール、またはアクセラレータの ID に基づいて、返送された WM_COMMAND メッセージをハンドラ関数に割り当てます。 |
|
通知コードに基づいて、返送された WM_COMMAND メッセージをハンドラ関数に割り当てます。 |
|
連続した範囲のコントロール ID に基づいて、返送された WM_COMMAND メッセージをハンドラ関数に割り当てます。 |
|
通知コードと、連続した範囲のコントロール ID に基づいて、返送された WM_COMMAND メッセージをハンドラ関数に割り当てます。 |
|
通知コードとコントロール ID に基づいて、返送された WM_NOTIFY メッセージをハンドラ関数に割り当てます。 |
|
コントロール ID に基づいて、返送された WM_NOTIFY メッセージをハンドラ関数に割り当てます。 |
|
通知コードに基づいて、返送された WM_NOTIFY メッセージをハンドラ関数に割り当てます。 |
|
連続した範囲のコントロール ID に基づいて、返送された WM_NOTIFY メッセージをハンドラ関数に割り当てます。 |
|
通知コードおよび連続した範囲のコントロール 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_MAP と END_MSG_MAP のインスタンスは、常に 1 つずつ存在することに注意してください。
ATL でのメッセージ マップの使い方の詳細については、「メッセージ マップ」を参照してください。
必要条件
ヘッダー : atlwin.h