
- •Глава 11 Окна диалога
- •Модальные окна диалога
- •Создание окна диалога About
- •Шаблон окна диалога
- •Диалоговая процедура
- •Вызов окна диалога
- •Дополнительная информация о стиле окна диалога
- •Дополнительная информация об определении дочерних окон элементов управления
- •Более сложное окно диалога
- •Работа с дочерними элементами управления окна диалога
- •Кнопки ok и Cancel
- •Позиции табуляции и группы
- •Рисование в окне диалога
- •Использование с окном диалога других функций
- •Определение собственных окон управления
- •Окна сообщений
- •Информация во всплывающих окнах
- •Немодальные окна диалога
- •Различия между модальными и немодальными окнами диалога
- •Новая программа colors
- •Программа hexcalc: обычное окно или окно диалога?
- •Творческое использование идентификаторов дочерних окон элементов управления
- •Диалоговые окна общего пользования
- •Модернизированная программа poppad
- •Изменение шрифта
- •Поиск и замена
- •Программа для Windows, содержащая всего один вызов функции
Глава 11 Окна диалога
Наиболее часто окна диалога или диалоговые окна используются для получения от пользователя дополнительной информации сверх той, которую может обеспечить меню. Программист показывает, что выбор какого-то пункта меню вызывает появления окна диалога, с помощью многоточия (...) после текста этого пункта меню.
Окно диалога обычно имеет вид всплывающего окна с разнообразными дочерними окнами элементов управления внутри. Размер и расположение этих дочерних окон задается в шаблоне окна диалога (dialog box template) в файле описания ресурсов программы. Microsoft Windows 95 обеспечивает возможность создания всплывающих окон диалога и дочерних окон элементов управления в нем, и возможность обработки оконной процедурой сообщений окна диалога (включая все сообщения клавиатуры и мыши). Тот код внутри Windows, который дает возможность все это сделать, иногда называют менеджером окна диалога (dialog box manager).
Многие сообщения, которые обрабатываются оконной процедурой окна диалога внутри Windows, также передаются и в вашу собственную программу в функцию, называемую процедурой окна диалога (dialog box procedure) или просто процедурой диалога (dialog procedure). Эта функция похожа на обычную оконную процедуру, но она имеет некоторые важные особенности. Как правило, внутри процедуры диалога не реализуется слишком много функций. Исключение составляют лишь инициализация дочерних окон элементов управления при создании окна диалога, обработка сообщений от дочерних окон элементов управления и завершение работы с окном диалога.
Рассмотрение окон диалога обычно бывает одним из самых объемных, поскольку оно включает в себя и описание дочерних окон элементов управления. Однако, материал о дочерних окнах элементов управления был представлен в главе 8. При использовании дочерних окон элементов управления, менеджер окна диалога Windows берет на себя решение многих из тех задач, с которыми нам пришлось столкнуться в главе 8. Например, проблемы, имевшие место в программе COLOR1 при передаче фокуса ввода от одной полосы прокрутки к другой, в окнах диалога не возникают. Windows управляет всей логикой переключения фокуса ввода между дочерними окнами элементов управления в окне диалога.
Тем не менее добавление в программу окна диалога – это непростая задача. Она требует внесения изменений в несколько файлов: шаблон окна диалога помещается в файл описания ресурсов, процедура окна диалога – в файл с исходными кодами программы, а идентификаторы, которые используются в окне диалога, часто вносятся в заголовочный файл программы. Для того чтобы почувствовать взаимозависимость всех этих составляющих, начнем с простого окна диалога.
Модальные окна диалога
Окна диалога бывают модальными (modal) или немодальными (modeless). Чаще всего встречаются модальные окна диалога. Если программа выводит на экран модальное окно диалога, то пользователь программы не может переключаться между окном диалога и другими окнами программы. Пользователь должен сначала закончить работу с окном диалога, это обычно делается путем щелчка на кнопке, помеченной либо OK, либо Cancel. Но, несмотря на наличие на экране окна диалога, пользователь может переключаться на другие программы. Некоторые окна диалога (называемые системными модальными окнами) этого делать не позволяют. Системное модальное окно диалога вынуждает пользователя, перед тем как он получит возможность сделать что-либо другое в Windows, завершить работу с ним.