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;
}

Windows > ウィンドウプロシージャ | comments (0) | trackbacks (0)

Comments

Comment Form

icons:

Trackbacks