こんな感じで希望していた動作に近くなりました。

HMENU hMenu = GetSystemMenu(hWnd, FALSE);
MENUINFO mi;
memset(&mi, 0x00, sizeof(mi));
mi.cbSize = sizeof(mi);
mi.fMask = MIM_STYLE;
GetMenuInfo(hMenu, &mi);
mi.dwStyle |= MNS_MODELESS;
SetMenuInfo(hMenu, &mi);

ただこれだけだと
タスクバーで右クリックされた時などに変な動作になります
PeekMessageで受信しているのにこちらが把握している
ウィンドウのWndProcに来ていないメッセージがあるので
それらはメニューのWndProcで処理されているようですね
このあたりを詳しく調べるともう少しちゃんとした動作にできるかもしれません