WM_DESTROYは、ウィンドウが破棄された時(DestroyWindowが呼ばれた後)に発生するウィンドウメッセージ。
WM_DESTROY message - Windows applications | Microsoft Docs
DestroyWindowの後に発生しているか確認する。

WM_DESTROYプロジェクトで、

新しい項目で、

WM_DESTROY.cppを追加。

リソースを追加。

Menuリソースを追加。
で、resource.hとWM_DESTROY.rcの中身は、DestroyWindowのトピックのものをそのまま使う。
WM_DESTROY.cppでは、
メニューアイテムが選択された時、ボタンが押された時、それぞれのDestroyWindowの前後にOutputDebugStringでログを出す。
WM_DESTROYが発生した時も、OutputDebugStringでログを出す。

デバッグ開始で、

メニューアイテムItem1-1を選択すると、ウィンドウは破棄されて終了する。

"ID_ITEM_1_1 before"の後に、DestroyWindowが呼ばれているはずで、その後に"WM_DESTROY"が出力されていて、"ID_ITEM_1_1 after"となっている。

ボタンButton1も、

同じような出力順。

さて、閉じるボタンはどうだろうか。

WM_DESTROYが出ているということは、その前にDestroyWindowによる破棄が行われている可能性がある。
しかし、DestroyWindowの呼び出しは、ここにはない別のメッセージの既定処理で行われている模様。
Sample/winapi/WM_DESTROY/WM_DESTROY/src/WM_DESTROY at master · bg1bgst333/Sample · GitHub