>>291で以前の問題は解決したのですが、
また別の問題が発生しました。

タイトルバー等で右クリックした時にも動作が止まってしまいます。
どうやら何らかのメッセージをDefWindowProcに渡すと
TrackPopupMenuか何かを内部で呼び出すようです。
試しにWM_NCRBUTTONDOWNでDefWindowProcを呼び出さないようにすると、
システムメニューそのものが表示されなくなったのですが、
タスクバーで右クリックするとタスクバー上にシステムメニューが表示され、
やはり動作が止まってしまうので、WM_NCRBUTTONDOWNでDefWindowProcを呼び出すことが
直接の原因ではないかもしれません。

一応試しにWM_NCRBUTTONDOWNで
UINT uItem = TrackPopupMenu(GetSystemMenu(hWnd, FALSE), TPM_LEFTALIGN | TPM_RIGHTBUTTON | TPM_RETURNCMD, pt.x, pt.y, 0, hWnd, NULL)
こんな風にしてみると、標準の動作に近くなったのですが、
TrackPopupMenu内部でメッセージループが回るようで、
自分が作ったメッセージループには処理が戻ってきません。

標準動作に近い形で、常に自分のメッセージループに処理を戻したいのですが、
いい方法はありますか?

TrackPopupMenu以外の方法でHMENUをポップアップ表示できれば、
後は自分で似た動作を作りこむことができそうなのですが、
その方法も解りません。