я тут ссылку нашел
http://firststeps.narod.ru/winapi/dialog/45.html ....
там написано:
...
Замечания
Макрокоманда DialogBoxIndirect для создания диалогового окна использует функцию CreateWindowEx. Затем DialogBoxIndirect отправляет сообщение WM_INITDIALOG в процедуру диалогового окна. Если шаблон определяет стиль DS_SETFONT, функция, к тому же, в процедуру диалогового окна передает и сообщение WM_SETFON. :!: Функция показывает на экране диалоговое окно :!: (независимо от того, определяет ли шаблон стиль WS_VISIBLE), блокирует окно владельца и запускает свой собственный цикл сообщений для извлечения и распределения сообщений для диалогового окна.
Когда процедура диалогового окна вызывает функцию EndDialog, DialogBoxIndirect разрушает блок диалога, заканчивает цикл сообщений, разрешает работу окну владельцу (если прежде это было разрешено) и возвращает параметр nResult, определяемый при помощи процедуры диалогового окна, когда она вызвала EndDialog.
...
в принципе, тоже самое (создать окно, заблокировать родителя и т.д.) можно и "ручками"(, но тодга соответственно и все компоненты самому...)