В обработчике диалога wm_initdialog выполняешь ShowWindow и все. НО. Не ясно, как ты хочешь выполнить появление? При вызове диалога через DialogBoxParam он будет модальным, т.е. заблокирует родителя и родитель не будет получать сообщений. Также родитель не будет выполнять свои действия, т.к. его тред в суспенде. Поэтому если окно запрятать, прога просто повиснет (визуально) и пользователь может сильно испугаться и позвать админа. Это, конечно, если я правильно вопрос понял..
Здравствуйте... На этым странице ты найдёшь один пример... http://pageperso.aol.fr/gerardchap/EnumCSP_2004-09-15.rar ( http://pageperso.aol.fr/GerardChap/Start.html ) Я дуиаю, что ты будешь рад чтобы увидеть хороший пример... Оставаюсь на твоей клавиатуре... Желаю хорошых успехов... С уважением... Gerard...( Жерар ) ------------------
А ты сам это пробовал? Или хотя бы читал АПИ справочнкик по поводу DialogBoxParam. Там сказано, что окно диалога появляется в любом случае, даже при условии ShowWindow(hDlg,SW_HIDE) в WM_INITDIALOG и даже если в ресурсе диалог сделан без флага WS_VISIBLE. А вообще, весь интерфейс проги и есть этот диалог. Это основное окно, родителя нет. А мне нужно, чтобы она запускалась в фоне, не показывая диалог. Он появится лишь от нажатия волшебной комбинации клавиш.
Quantum Мне нужно диалоговое окно. Чтобы выполнение крутилось в его процедуре. Или какое сообщение приходит обязательно после того, как диалог отображён?
SolidCode Не понял. Неужели лень добавить GetMessage/IsDialogMessage/DispatchMessage в основной код программы?
SolidCode Как вариант: Код (Text): case WM_PAINT: if (flag == FALSE) { ShowWindow(hwnd, SW_HIDE); flag = TRUE; } return TRUE;
О, ребята, спасибо! Это уже интересные подходы. Я до этого не додумался. Попробую, потом напишу о результатах.
n0p При вызове диалога через DialogBoxParam он будет модальным Это как пожелаешь, то бишь не обязательно
Asterix Почему не обязательно? Обязательно. Так в Писании написано. Говорят, если хотите немодальное - юз CreateDialogParam, Люк. Хотя сам я сей факт не проверял.
n0p > Так в Писании написано. Хмм, действительно написано.. Я просто подумал что hWndParent может быть 0, плюс, ничто, вроде, не мешает вызвать DialogBoxParam в отдельном треде, чтоб не блокировал работу основного потока..
Дык в отдельном треде оно будет модальным и заберет все ресурсы треда. Правда, родителя заблокировать не должно (если парент 0). Вобще интересный метод извращения.. ))
Вот что написано в MSDN : You can use class CDialog to manage two kinds of dialog boxes: Modal dialog boxes, which require the user to respond before continuing the program Modeless dialog boxes, which <font color="red]stay on the screen and are available for use at any time but permit other user activities </font><!--color--> Но он остается на экране :-( ================================== Почему нельзя создать пустое или невидимое окно и ждать волшебной комбинации, навесив на него обработку клавиатуры. А то выходит, что приложения без диалогового окна не бывает :-(
Бывает. Quantum предложил интересный вариант. Но вариант Asterix-а мне больше подошёл. Я как раз делаю один "снифер", который показывает своё диалоговое окно только тогда, когда это разрешено в его установках. Т.е. при запуске проги, если она в скрытом от юзеря режиме через автозагрузку, диалоговое окно после создания не должно появиться на экране.
SolidCode В моем варианте окно всё-таки можно иногда заметить на экране на доли секунды оно может появиться %)