CreateWindow時のメッセージ

過去にあったミスから、他所であまり紹介されてないものをメモ

CreateWindowExを呼ぶと、ウィンドウプロシジャにいくつかのメッセージが飛びます。

ブレークポイントを設定し追っていくと・・・

  1. msg=36(0x24) なので WM_GETMINMAXINFO
  2. msg=129(0x81) なので WM_NCCREATE
  3. msg=131(0x83) なので WM_NCCALCSIZE
  4. msg=28(0x1c) なので WM_ACTIVATEAPP
  5. msg=1(0x01) なので WM_CREATE

これはCreateWindowExが成功しているときのメッセージです。
ここでWM_CREATEまでクリアすると無事CreateWindowExよりウィンドウハンドルを取得することができます。

次に失敗しているときのメッセージの例です。

  1. msg=36(0x24) なので WM_GETMINMAXINFO
  2. msg=129(0x81) なので WM_NCCREATE
  3. msg=130(0x82) なので WM_NCDESTROY

このWM_NCDESTROYとはウィンドウを破棄してくれ、というメッセージらしいです。


昔、ウィンドウ周りのクラス化を行っている最中に、これで引っかかった事がありました。