|
|||||
|
|||||
|
||||||
ATL/WTLプログラミングでは、メッセージとそれに対応するハンドラ関数をメッセージマップによって
結び付けます。
ウィンドウがメッセージを受け取ると、メッセージマップの先頭から順に検索されるので、 頻繁に使用されるメッセージを最初の方に記述しておくと良いでしょう。 メッセージマップ中に対応するメッセージマクロが見つからなければ、メッセージは デフォルトウィンドウプロシージャに渡されます。 ATLが用意するメッセージマクロには大きく分けて、汎用メッセージハンドラマクロ、 WM_COMMANDメッセージハンドラマクロ、WM_NOTIFYメッセージハンドラマクロの3種類あります。 |
![]() | 汎用メッセージハンドラマクロ | |
汎用メッセージハンドラマクロはすべてのメッセージを対象とします。
汎用メッセージハンドラマクロには次の2種類があります。
汎用メッセージハンドラ関数のプロトタイプを以下に示します。
uMsgはメッセージを識別し、wParamとlParamはメッセージパラメータです。 メッセージパラメータの内容はメッセージの種類によって変わります。 bHandledはメッセージの処理を終えたかどうかを示すフラグです。 bHandledがハンドラ関数の中でFALSEに設定されていると、メッセージマップの残りの部分で、 そのメッセージのためのハンドラが別にないかどうかが検索されます。 bHandledはハンドラ関数の呼び出し前にTRUEに設定されるので、 ハンドラ関数がbHandledを明示的にFALSEに設定しない限り、 それ以上のハンドラ検索処理は行われません。 |
||
![]() | WM_COMMANDメッセージハンドラマクロ | |
WM_COMMANDメッセージハンドラマクロはWM_COMMANDメッセージを対象とします。
WM_COMMANDメッセージハンドラマクロには次の5種類があります。
WM_COMMANDメッセージハンドラ関数のプロトタイプを以下に示します。
wNotifyCodeは通知コード、wIDはWM_COMMANDメッセージを送信したコントロールの識別子、 hWndCtlはWM_COMMANDメッセージを送信したコントロールのハンドル、bHandledは前述のフラグです。 |
||
![]() | WM_NOTIFYメッセージハンドラマクロ | |
WM_NOTIFYメッセージハンドラマクロはWM_NOTIFYメッセージを対象とします。
WM_NOTIFYメッセージハンドラマクロには次の5種類があります。
WM_NOTIFYメッセージハンドラ関数のプロトタイプを以下に示します。
idCtrlはWM_NOTIFYメッセージを送信したコントロールの識別子、pnmhはNMHDR構造体へのポインタ、 bHandledは前述のフラグです。 |
||