Привет!
Ситуация:
1. Есть диалог с progress bar'ом.
2. Когда закончилась печать обьекта (елипс, прямоугольник, ...) этот обьект посылает message диалогу чтобы тот продвинул индикатор печати (progress bar). Поєтому диалог создаётся с помощью CreateDialog, посколько програма не должна прекращать своё исполнение.
3. Поскольку диалог не модальный юзер может в любою момент нажать на "крестик" и закрыть прогу, что не допустимо!
Вопрос: Как создать диалог, чтобы функция, которая его создаёт, сразу же вернула управление вызывающей её функции, а юзер не мог доступиться до ничего кроме этого диалога.
"Молально-немодальный" диалог
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
- 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" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Создай рабочий поток для печати обьекта (кстати что за печать - вывод на принтер или на экран?) до создания модального диалога. Доступа к проге у юзера не будет, а печать будет выполняться.
По окончании печати заверши поток и закрой диалог.
По окончании печати заверши поток и закрой диалог.