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