WM_CREATE

WM_CREATEは、ウィンドウが生成される前に発生するウィンドウメッセージ・・・。

WM_CREATE message (Windows)

CreateWindowやCreateWindowExを呼んだ後に発生し、ウィンドウプロシージャのlParamにはCREATESTRUCT構造体のポインタが渡される・・・。
この中には生成するウィンドウ情報が入っているので、これらを使ってウィンドウ生成時の処理を書くことができる・・・。
最後にDefWindowProcに行かずにreturn 0でもウィンドウは生成に成功するが、return -1とすると失敗する・・・。

今回は、生成されたウィンドウのハンドルhwnd, ウィンドウ名lpcs->lpszName, ウィンドウの位置lpcs->x, lpcs->yをメッセージボックスで表示する・・・。

tszMsgは最終的に表示する文字列で、tszTmpに各項目ごとに文字列をセットして、その都度tszMsgに連結・・・。
lpcsはCreateStruct構造体へのポインタ・・・。

lParamをCreatStruct構造体へのポインタ(LPCREATESTRUCT)にキャストしてlpcsに・・・。

まず、"WM_CREATE"を連結・・・。

hwndに生成するウィンドウのハンドルがあるので連結・・・。

CreateStruct構造体の要素lpszNameにはウィンドウ名・・・。

x, yにはウィンドウの位置座標・・・。(左上を(0, 0)とする。)

連結した文字列をMessageBoxで表示・・・。

ウィンドウ作成成功とする場合は、breakせず0を返してもいい・・・。

実行すると、

f:id:BG1:20150322220226p:plain

ウィンドウ生成前にこれが表示される・・・。
CreateWindowでCW_USEDEFAULTにしているので、x, yは毎回変わるが、固定値を指定するとそれになると思う・・・。

でそのあと、

f:id:BG1:20150322220441p:plain

とウィンドウが表示される・・・。

Sample/WM_CREATE.cpp at master · bg1bgst333/Sample · GitHub