· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› DialogBox

. 1 . 2 . >>

Посл.отвђт Сообщенiе


Дата: Окт 3, 2004 05:26:45

Как сделать DialogBox (с помощью DialogBoxParam), чтобы он не появлялся автоматически при создании?


Дата: Окт 3, 2004 09:28:03

В обработчике диалога wm_initdialog выполняешь ShowWindow и все. НО. Не ясно, как ты хочешь выполнить появление? При вызове диалога через DialogBoxParam он будет модальным, т.е. заблокирует родителя и родитель не будет получать сообщений. Также родитель не будет выполнять свои действия, т.к. его тред в суспенде. Поэтому если окно запрятать, прога просто повиснет (визуально) и пользователь может сильно испугаться и позвать админа.

Это, конечно, если я правильно вопрос понял.. :)


Дата: Окт 3, 2004 09:29:41

Здравствуйте...

На этым странице ты найдёшь один пример...

http://pageperso.aol.fr/gerardchap/EnumCSP_2004-09-15.rar

( http://pageperso.aol.fr/GerardChap/Start.html )

Я дуиаю, что ты будешь рад чтобы увидеть хороший пример...

Оставаюсь на твоей клавиатуре...

Желаю хорошых успехов...

С уважением...

Gerard...( Жерар )
------------------


Дата: Окт 4, 2004 05:26:54

„В обработчике диалога wm_initdialog выполняешь ShowWindow и все.“
А ты сам это пробовал? Или хотя бы читал АПИ справочнкик по поводу DialogBoxParam. Там сказано, что окно диалога появляется в любом случае, даже при условии ShowWindow(hDlg,SW_HIDE) в WM_INITDIALOG и даже если в ресурсе диалог сделан без флага WS_VISIBLE.
А вообще, весь интерфейс проги и есть этот диалог. Это основное окно, родителя нет. А мне нужно, чтобы она запускалась в фоне, не показывая диалог. Он появится лишь от нажатия волшебной комбинации клавиш.


Дата: Окт 4, 2004 05:37:27

SolidCode
Что мешает юзать CreateDialogParam?


Дата: Окт 4, 2004 05:41:16

Quantum
Мне нужно диалоговое окно. Чтобы выполнение крутилось в его процедуре.

Или какое сообщение приходит обязательно после того, как диалог отображён?


Дата: Окт 4, 2004 05:52:54

SolidCode
„Мне нужно диалоговое окно. Чтобы выполнение крутилось в его процедуре.“
Не понял. Неужели лень добавить GetMessage/IsDialogMessage/DispatchMessage в основной код программы?


Дата: Окт 4, 2004 05:54:56 · Поправил: Asterix

SolidCode

Как вариант:
case WM_PAINT:
  if (flag == FALSE)
   {
     ShowWindow(hwnd, SW_HIDE);
     flag = TRUE;
   }
  return TRUE;


Дата: Окт 4, 2004 06:00:17

О, ребята, спасибо!
Это уже интересные подходы. Я до этого не додумался.
Попробую, потом напишу о результатах.


Дата: Окт 4, 2004 06:34:22

n0p
При вызове диалога через DialogBoxParam он будет модальным

Это как пожелаешь, то бишь не обязательно ;-)


Дата: Окт 4, 2004 10:06:20

Asterix
Почему не обязательно? Обязательно. Так в Писании написано. Говорят, если хотите немодальное - юз CreateDialogParam, Люк.

Хотя сам я сей факт не проверял.


Дата: Окт 4, 2004 12:44:12

а чем окно не удовлетворяет если оно все равно показываться не будет ?


Дата: Окт 4, 2004 13:22:15

n0p
> Так в Писании написано.

Хмм, действительно написано..
Я просто подумал что hWndParent может быть 0, плюс, ничто, вроде, не мешает вызвать DialogBoxParam в отдельном треде, чтоб не блокировал работу основного потока..


Дата: Окт 5, 2004 09:53:39

Дык в отдельном треде оно будет модальным и заберет все ресурсы треда. Правда, родителя заблокировать не должно (если парент 0).

Вобще интересный метод извращения.. :)))


Дата: Окт 5, 2004 14:16:46

Вот что написано в 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 stay on the screen and are available for use at any time but permit other user activities
Но он остается на экране :-(
==================================
Почему нельзя создать пустое или невидимое окно
и ждать волшебной комбинации, навесив на него
обработку клавиатуры. А то выходит, что приложения
без диалогового окна не бывает :-(

. 1 . 2 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.104