Вопрос № 58426: Как через CreateWindowEx создать модальное окно (не диалоговое)?
Т.е. чтобы в то время когда окно открыто, другие окна программы не получали фокус.
..
Вопрос № 58.426
Как через CreateWindowEx создать модальное окно (не диалоговое)?
Т.е. чтобы в то время когда окно открыто, другие окна программы не получали фокус.
Отправлен: 10.10.2006, 19:17
Вопрос задал: Bcd (статус: 1-ый класс)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Bob Johnson
Здравствуйте, Bcd!
модальное окно - это заслуга не функции CreateWindowEx.
модальное окно создается совершенно аналогично обычному, но перед тем как вывести его на экран, родительское окно disable'ится функцией EnableWindow. После исчезновения модального окна с экрана, родительское окно enable'ится с помощью той же функции.
если ты пишешь на С++ и используешь классы, можно включить дополнительный цикл сообщений внутрь процедуры, выводящей модальное окно. тогда завершение выполнения этой процедуры будет происходить только после закрытия модального окна, т.е. вызов будет синхронным.
Ответ отправил: Bob Johnson (статус: Академик) Россия, Калуга WWW:Программирование ---- Ответ отправлен: 10.10.2006, 19:42 Оценка за ответ: 5
Отвечает: Sergey A. Wedensky
Здравствуйте, Bcd!
Через CreateWindowEx его создать нельзя. Единственное, чем отличается CreateWindowEx от CreateWindow - это возможность задания расширенных стилей.
Соглашусь с мр. Bob Johnson - чтобы окно было модальным, можно заблокировать остальные окна процесса или на время его жизни организовать "местную" очередь сообщений.
Но чем Вам не нравится диалоговое окно?
Если невозможностью изменения размеров, то это не так, с помощью опять же стилей можно добиться. А в остальном - все то же самое, та же оконная процедура, и т.д.
Ответ отправил: Sergey A. Wedensky (статус: 4-ый класс)
Ответ отправлен: 10.10.2006, 19:52 Оценка за ответ: 5