PeekMessage()は、メッセージキューに投稿されたメッセージのみを表示できます。これはWM_SIZEを除外し、送信され、投稿されません。つまり、SendMessage()によって配信され、ウィンドウプロシージャを直接呼び出して、メッセージキューをバイパスします。そうです、PostMessageを使用してメッセージを再投稿すると、コードが機能し始めます。メッセージキューに入れられ、PeekMessageがメッセージを確認できるようになります。
ユーザーがウィンドウのサイズを変更すると、何か別のことが起こります。これは、別のメッセージWM_SIZINGによって報告されます。これは、Windowsがモーダルメッセージループを開始してサイズ変更操作を実装すると、かなり高い割合で生成されます。これを通知します。モーダルループの開始時(ユーザーがウィンドウコーナーをクリック)にWM_ENTERSIZEMOVEを取得し、完了したとき(ユーザーがボタンを離したとき)にWM_EXITSIZEMOVEを取得します。ウィンドウプロシージャに送信される一連のWM_SIZINGメッセージを受け取ります。投稿されていません。そして、1つのWM_SIZEで最終的なサイズを指定します。これらのメッセージのこれらの反映されたバージョンを表示しない1つの方法は、独自のメッセージループでPeekMessage()を呼び出す場合です。Windowsのモーダルサイズ変更ループがアクティブな場合は呼び出されません。
より良いアドバイスを与えるのは難しいですが、なぜあなたがこれをしているのかは本当に不明確です。「医者、それは痛い、それならやらないでください」医学的答えは関連性が高い可能性が高いです。WM_SIZINGメッセージも反映したいと思うかもしれません。最大の問題は、キューからこれらのメッセージを取得するまでに、ウィンドウサイズがすでに変更されており、通知が古くなっていることです。これが、メッセージが送信され、投稿されない理由です。