<Previous> <Next> <SDK Top> <Top>
1章.8節.メッセージ
WndProc関数のなかに,
WM_COMMAND:
WM_PAINT:
WM_DESTROY:
といったわけのわからない文字列がでてきました.
一体これは何なんでしょう?実はこれこそメッセージの名前なんです.
くどいようですが,メッセージっていうのは,キーボードが押されたとかいうイベントからWindowsがアプリケーションに送ってくるものでしたね.
じゃあ,このメッセージが送られてきたとき,何をしているんでしょうか?
それは,はじめにVC++が勝手に作ってくれたアプリケーションを使ってみればわかります.
なんせ,このプロシージャーは,VC++が勝手に作ってくれたアプリケーションのプロシージャーなんですから.
このアプリケーションは下のようなウィンドウでしたよね.(ウィンドウを少々小さくしています.)
このアプリケーションの機能としては,
@HelloWorld!と表示される.
Aメニューバー([ファイル]や[ヘルプ]のこと)が使える.
というものです.
まず,@ですが,これはHelloWorldと表示しているので,表示(PAINT)に関するメッセージがあるはずです!!
なんとWM_PAINTがそのメッセージなのです.
しかし,,表示に関するメッセージのイベントなんて起こしたっけ?
実は起こしてません.このメッセージはWindowsが勝手にこのアプリケーションに送ってきたものなんです.
こういうメッセージもあるということを覚えておいてください.
表示メッセージのWM_PAINTの処理を見てみると,
hdc = BeginPaint (hWnd, &ps);
// TODO: この位置に描画用のコードを追加してください...
RECT rt;
GetClientRect( hWnd, &rt );
DrawText( hdc, szHello, strlen(szHello), &rt, DT_CENTER );
EndPaint( hWnd, &ps );
と書いてありました...なんか見たことない関数ばっかりですね.しかし,気にする必要はありません.
ここで,HelloWorldと表示しているんだなぁぐらい思っていればいいです.
次にAですが,メニューバーをいじってみると
[ファイル]-[アプリケーションの終了]
[ヘルプ]-[バージョン情報]
というポップアップが現れます.
メニューに関するメッセージは,WM_COMMANDというのがそのようです.その中身を見てみると
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
// メニュー選択の解析:
switch( wmId )
{
case IDM_ABOUT:
DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);
break;
case IDM_EXIT:
DestroyWindow( hWnd );
break;
default:
return DefWindowProc( hWnd, message, wParam, lParam );
}
これもなんのこっちゃ??って感じですが,ここでわかってほしいことは,
[ファイル]-[アプリケーションの終了]は,IDM_EXITでアプリケーション終了処理を行っている.
[ヘルプ]-[バージョン情報]は,IDM_ABOUTでバージョン情報のダイアログボックスを表示している.
ということです.
この章のまとめとして,わかってほしかったことは
アプリケーションの機能に対応する処理はちゃんとプロシージャーに書いてある
ということです.
現段階ではそれだけわかってもらえれば結構です.
------------------------------------------------------------------------------------------------
注)当ページの一部または全部を転載、複写、複製することを禁じます。
Update 04/01/30 By 松本義弘
------------------------------------------------------------------------------------------------