
TBN.ru
|
Диалоговое
окно, как и меню, может быть создано несколькими
способами: во-первых, с помощью описания его в
файле ресурсов и, во-вторых, во время выполнения
программы. Наиболее часто используется описание
диалога в файле ресурсов. Лучше всего при
создании диалого воспользоваться редактором
ресурсов, с помощью которого может быть создан
текстовый файл, содержащий описание диалогового
окна. Ресурсы диалога в этом текстовом файле
задаются оператором DIALOG, который имеет следующий
формат:
DialogName DIALOG [DISCARDABLE] X,Y,Width,Height
CAPTION "Заголовок окна"
STYLE <Стили диалогового окна>
FONT n, <имя шрифта>
{
Описание элементов диалога
}
В данном случае DialogName - это имя
диалогового окна. Опция DISCARDABLE станет совершенно
ясной при рассмотрении вопроса об организации
памяти в Windows. Параметры X и Y - это координаты
верхнего левого угла диалового окна, Width и Height -
ширина и высота диалога. STYLE описывает стили окна.
Здесь могут использоваться как стили,
применяемые для описания обычных окон, так и
стили, применяемые только в диалоговых окнах. Эти
новые стили приведены в таблице:
Стили диалоговых окон
Стиль |
Значение |
Эффект |
DS_ABSALIGN |
0x0001L |
Положение диалогового окна исчисляется в
экранных координатах |
DS_SYSMODAL |
0x0002L |
Создается системное модальное диалоговое окно |
DS_3DLOOK |
0x0004L |
Создается диалоговое окно, имеющее зрительную
иллюзию трехмерности |
DS_FIXEDSYS |
0x0008L |
Вместо SYSTEM_FONT используется SYSTEM_FIXED_FONT |
DS_NOFAILCREATE |
0x0010L |
Диалоговое окно создается, несмотря на то, что
при его создании произошли ошибки |
DS_LOCALEDIT |
0x0020L |
В 32-битных приложениях не используется |
DS_SETFONT |
0x0040L |
Определяет шрифт, который будет применятся в
диалоговом окне |
DS_MODALFRAME |
0x0080L |
Создается модальное диалоговое окно |
DS_NOIDLEMSG |
0x0100L |
|
DS_SETFOREGROUND |
0x0200L |
Поместить диалоговое окно на передний план |
DS_CONTROL |
0x0400L |
|
DS_CENTER |
0x0800L |
Диалоговое окно помещается в центр рабочей
области |
DS_CENTERMOUSE |
0x1000L |
|
DS_CONTEXTHELP |
0x2000L |
|
Приведенных выше сведений
вполне достаточно, чтобы написать заготовку
диалогового окна в файле ресурсов. Но какой смысл
описывать диалоговое окно, если в нем нет ни
одного из элементов управления? Ведь даже
закрыть такое диалоговое окно (если в нем,
конечно, нет системного меню) невозможно! Значит,
нам необходимо срочно научиться описывать эти
элементы!
Я уже упоминал о том, что в "недрах"
Win32 есть масса предопределенных объектов. В
частности, там находятся и некоторые
предопределенные классы окон. К таким классам
относятся кнопки (класс "button"), списки (класс
"listbox"), комбинированные списки (класс
"combobox"), окна редактирования (класс
"edit"), полосы прокрутки (класс "scrollbar"),
статистические элементы (класс "static"). У
каждого класса есть свой определенный набор
стилей, которые определяют внешний вид и
поведение элементов управления, относящихся к
данному классу.
Управление окном каждого класса, а также
получение информации от него производится с
помощью обмена управляющими сообщениями. О
действиях пользователей с ними элементы
управления оповещают свои родительские окна
через нотификационные сообщения. |