Создание диалогового окна

Диалоговое окно, как и меню, может быть создано несколькими способами: во-первых, с помощью описания его в файле ресурсов и, во-вторых, во время выполнения программы. Наиболее часто используется описание диалога в файле ресурсов. Лучше всего при создании диалого воспользоваться редактором ресурсов, с помощью которого может быть создан текстовый файл, содержащий описание диалогового окна. Ресурсы диалога в этом текстовом файле задаются оператором 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"). У каждого класса есть свой определенный набор стилей, которые определяют внешний вид и поведение элементов управления, относящихся к данному классу.

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

Используются технологии uCoz