ダイアログをダイアログらしくさせているのはメッセージループで呼び出される IsDialogMessageなわけだけど、DialogBox/DialogBoxParamで作成されるモーダルダイアログは指定されたリソースでモードレスダイアログを作成後に自分だけを対象として IsDialogMessageを呼び出す独自のメッセージループを回す実装になっている。
結果として、モーダルダイアログから作成したモードレスダイアログを対象とする IsDialogMessageを呼び出す機会がなく、モードレスダイアログはダイアログらしい動作ができない。
どうにかしてモードレスダイアログを対象とした IsDialogMessage呼び出しを実現できないかと調べた結果…どうにもならないという結論に。
ならばどうするかというと、DialogBox/DialogBoxParamが行っている処理をまるまる置き換えてしまえば良いという事になる模様。
FYI: The dialog manager, part 5: Converting a non-modal dialog box to modal
FYI: The dialog manager, part 7: More subtleties in message loops