読者です 読者をやめる 読者になる 読者になる

day 002

WinAPIもぅマヂ無理。。。

参考: 動画とHandMade Hero Day 002 - Opening a Win32 Window (Emmanuel Vaccaro) .pdf - Google ドライブ

  • ウィンドウクラス(WNDCLASS)を作る。lpfnWndProcというコールバック関数にするべきことを書く。
  • (コールバック関数の名前はMainWindowCallbackとしておく)
  • RegisterClassCreateWindowExでウィンドウクラスを登録する。
  • 作ったウィンドウにWindowsのOSが送りつけているメッセージ(どっかのqueueに積まれているらしい)をpollする。GetMessageでpoll, TranslateMessage, DispatchMessageでハンドリング。

ウィンドウクラスがもつべきコールバック関数の型は以下のとおり。

WindowProc callback function (Windows)

LRESULT CALLBACK WindowProc(
  _In_ HWND   hwnd,     // <- ウィンドウのハンドル
  _In_ UINT   Message,  // <- Windowsのメッセージ
  _In_ WPARAM wParam,   // <- 付加的なメッセージ情報
  _In_ LPARAM lParam    // <- wParamと同じようなもんらしい…ってなんじゃそりゃ
);

Messageをswitch構文でハンドリングしていくのが定石。問題はシステム上で定義されているメッセージの種類なのだが、死ぬほどたくさんある。

About Messages and Message Queues (Windows)

一般にイメージされる普通のアプリケーション(?)を書くにはまずWM系のメッセージをハンドリングしていくとよい。

こういうのは知っているか知っていないかだけの問題だろう。つらい。。。