MSG

GetMessageなどで取得した、ウィンドウメッセージ情報を格納しているのがMSG。

MSG (winuser.h) - Win32 apps | Microsoft Docs

単純にはそうだが、メッセージループとなると、不思議な部分もある。

こういうMSG構造体のmessageの値を記録しておくログ関数を作っておいて、

メッセージループ付近にログを配置。

ウィンドウを表示するだけ。
ウィンドウを表示するだけ。

ウィンドウを表示するだけ。

win32apiのGetMessage関数について質問です。第二引数のハン... - Yahoo!知恵袋

GetMessageにNULLを指定していて、これは呼び出し側のスレッド(つまりこのメインウィンドウスレッド)のすべてのウィンドウメッセージと、PostThreadMessageでこちらに送られたものを指す。
それにしても、msg.logを見てみると、00000001(つまりWM_CREATE)が無い。
メッセージループの前にCreateWindowしているけど、そこの時点でWM_CREATE処理しているため、記録されない。

00000012はWM_QUIT
00000012はWM_QUIT

00000012はWM_QUIT。
それにしても不思議なのは、WM_QUITは最後なのであるとして、WM_CLOSEやWM_DESTROYが記録されないのは不思議。スレッドが違うのかな。

通常終了じゃなくて、デバッガ終了だと、

0000000fはWM_PAINT
0000000fはWM_PAINT

0000000fはWM_PAINT。
最初の描画があるので当然呼ばれる。

最大化などでWM_SYSCOMMAND
最大化などでWM_SYSCOMMAND

最大化などでWM_SYSCOMMAND。

00000112がWM_SYSCOMMAND
00000112がWM_SYSCOMMAND

00000112がWM_SYSCOMMAND。
でもグリグリとウィンドウを動かしてもWM_MOVEとかは記録が無かった。

Sample/winapi/MSG/MSG/src/MSG at master · bg1bgst333/Sample · GitHub