win32アプリでWinMainでreturn msg.wParamと終了するのではなく、
他の潜り先でGetMessageの戻り値が0以下の時にexit(msg.wParam);
ではダメなのでしょうか。