Страница 1 из 1

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

Добавлено: 21 апр 2005, 16:14
Marjan
Привет!
Ситуация:
1. Есть диалог с progress bar'ом.

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

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

Вопрос: Как создать диалог, чтобы функция, которая его создаёт, сразу же вернула управление вызывающей её функции, а юзер не мог доступиться до ничего кроме этого диалога.

Добавлено: 21 апр 2005, 17:34
Romeo
Очень просто. Нужно создать мнимо модальный диалог. Что такое модальность? Это когда ни до чего, кроме текущего диалога достучаться нельзя. Эмулируется эта ситуация так: в OnInitDialog диалог дисэйблит своего парента EnableWindow(HWND, FALSE), а в OnDestroy - снова енэйблит EnableWindow(HWND, TRUE).

Добавлено: 21 апр 2005, 17:35
Tima
Создай рабочий поток для печати обьекта (кстати что за печать - вывод на принтер или на экран?) до создания модального диалога. Доступа к проге у юзера не будет, а печать будет выполняться.
По окончании печати заверши поток и закрой диалог.

Добавлено: 21 апр 2005, 17:57
Marjan
Да, всё верно, Romeo! Я уже догадался... Иногда решение проще чем кажеться. Спасибо Romeo, спасибо Tima!