"Молально-немодальный" диалог

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
Marjan
Сообщения: 27
Зарегистрирован: 25 авг 2004, 15:28
Откуда: Україна, Львів
Контактная информация:

Привет!
Ситуация:
1. Есть диалог с progress bar'ом.

2. Когда закончилась печать обьекта (елипс, прямоугольник, ...) этот обьект посылает message диалогу чтобы тот продвинул индикатор печати (progress bar). Поєтому диалог создаётся с помощью CreateDialog, посколько програма не должна прекращать своё исполнение.

3. Поскольку диалог не модальный юзер может в любою момент нажать на "крестик" и закрыть прогу, что не допустимо!

Вопрос: Как создать диалог, чтобы функция, которая его создаёт, сразу же вернула управление вызывающей её функции, а юзер не мог доступиться до ничего кроме этого диалога.
Все, що не робиться - на краще!
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Очень просто. Нужно создать мнимо модальный диалог. Что такое модальность? Это когда ни до чего, кроме текущего диалога достучаться нельзя. Эмулируется эта ситуация так: в OnInitDialog диалог дисэйблит своего парента EnableWindow(HWND, FALSE), а в OnDestroy - снова енэйблит EnableWindow(HWND, TRUE).
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Tima
Сообщения: 43
Зарегистрирован: 23 сен 2004, 11:17
Откуда: Харьков
Контактная информация:

Создай рабочий поток для печати обьекта (кстати что за печать - вывод на принтер или на экран?) до создания модального диалога. Доступа к проге у юзера не будет, а печать будет выполняться.
По окончании печати заверши поток и закрой диалог.
Marjan
Сообщения: 27
Зарегистрирован: 25 авг 2004, 15:28
Откуда: Україна, Львів
Контактная информация:

Да, всё верно, Romeo! Я уже догадался... Иногда решение проще чем кажеться. Спасибо Romeo, спасибо Tima!
Все, що не робиться - на краще!
Ответить