WindowProc()関数
LRESULT CALLBACK WindowProc(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
);
hWnd | ウィンドウを識別するハンドル。 |
uMsg | ウィンドウに送られたメッセージ。 |
wParam | メッセージ固有の追加情報。 |
lParam | メッセージ固有の追加情報。 |
・関数名は自由に命名することができますが、戻り値と引数の型はこれを守らなければなりません。
・ウィンドウプロシージャを呼び出すのはアプリケーションではなくWindowsです。
・メッセージキューに新しいメッセージをエンキューする場合は、メッセージを「Postする」、キューではなく直接プロシージャにメッセージを送る事を「Sendする」と表現します。
・重要ではあるが興味の無いメッセージはDefWindowProc()関数に渡すようにします。
・4つの引数は、いずれもMSG構造体のメンバーに対応しています。MSG構造体のtimeとptメンバーに対応する引数が無いのは、これらの値を利用することがめったにないためと考えれます。必要なら、それぞれGetMessageTime、GetMessagePosというAPIを使って取得します。
記述例
LRESULT CALLBACK WndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam )
{
PAINTSTRUCT ps;
HDC hdc;
switch ( message ) {
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
// TODO: 描画コードをここに追加してください...
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
Comments