Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
uchebnik.docx
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
557.61 Кб
Скачать

1.2.4.1.3 Диалоговые окна

Диалоговое окно - это временное окно, которое создает приложение для обеспечения ввода пользователем данных. Приложения обычно используют диалоговые окна для запроса у пользователя дополнительных данных, необходимых для выполнения команд, инициированных пунктами меню. Диалоговое окно обычно содержит одно или более управляющих элементов (дочерних окон) с помощью которых пользователь вводит текст, выбирает какие-то действия и т.п.

ОС Windows также обеспечивает предопределенные диалоговые окна, которые поддерживают такие широко распространенные пункты меню как "Открыть" ("Open") или "Печать" ("Print").

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

Большинство приложений используют диалоговые окна для запроса дополнительных данных для команд меню, требующих ввода пользователем данных. Использование диалоговых окон является единственным рекомендуемым путем получения ввода данных.

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

Таким образом, диалоговые окна могут использоваться двояким образом: для однократного ввода данных, в этом случае они создаются - пользователь вводит данные - диалоговое окно уничтожается; для многократного использования, в этом случае диалоговые окна создаются и отображаются на экране до тех пор, пока не будет закрыто окно приложения или пользователь сам не закроет диалоговое окно. Из этого вытекает 2 типа диалоговых окон: модальные и немодальные.

Модальные диалоговые окна используются тогда, когда необходимо чтобы пользователь ввел данные или отказался от ввода данных, прежде чем приложение продолжит выполняться.

Немодальные диалоговые окна позволяют пользователю ввести необходимые данные и вернуться к предыдущей задаче не закрывая диалоговое окно.

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

Для создания диалогового окна (независимо от его типа), приложение должно определить шаблон диалогового окна, в котором будет описываться стиль диалогового окна и его содержимое. Шаблон диалогового окна определяет его размеры, стиль окна и содержащиеся на нем элементы управления. Этот шаблон может создаваться во время выполнения программы или загружаться как ресурс из внешнего источника.

Шаблон диалогового окна в памяти состоит из заголовка, который описывает диалоговое окно и одного или нескольких дополнительных блоков данных, каждый из которых описывает какой-либо элемент управления на диалоговом окне.

Шаблон может использовать либо стандартный, либо расширенный формат.

В стандартном формате, заголовок представляет собой структуру типа DLGTEMPLATE (таблица 13), за которой следует дополнительные массивы данных переменной длины. Данные для каждого элемента управления состоят из структуры типа DLGITEMTEMPLATE (таблица 14), за которой следуют дополнительные массивы данных переменной длины.

Таблица 13 - Структура данных, описывающая диалоговое окно

DLGTEMPLATE Struc

Название поля

Тип в С

Тип в ассемблере

Назначение поля

style;

DWORD

DD

Определяет стиль диалогового окна, может быть комбинацией значений стилей обычного окна (константы WS_) и стилей диалогового окна (константы DS_ определяются в заголовочном файле WinUser.h)

dwExtendedStyle

DWORD

DD

Определяет дополнительные стили окна. Этот элемент не используется при создании диалогового окна, однако приложения могут его использовать для создания других типов окон

cdit

WORD

DW

Определяет число элементов диалогового окна

x

short

DW

Определяет координату левого верхнего угла диалогового окна по горизонтали

y

short

DW

Определяет координату левого верхнего угла диалогового окна по вертикали

cx

short

DW

Определяет ширину диалогового окна

cy

short

DW

Определяет высоту диалогового окна

Таблица 14 - Структура данных, описывающая управляющие элементы на диалоговом окне

DLGITEMTEMPLATE Struc

Название поля

Тип в С

Тип в ассемблере

Назначение поля

style

DWORD

DD

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

dwExtendedStyle

DWORD

DD

Определяет дополнительные стили окна

x

short

DW

Определяет координату левого верхнего угла управляющего элемента относительно левого верхнего угла диалогового окна по горизонтали

y

short

DW

Определяет координату левого верхнего угла управляющего элемента относительно левого верхнего угла диалогового окна по горизонтали

cx

short

DW

Определяет ширину управляющего элемента

cy

short

DW

Определяет высоту управляющего элемента

id

WORD

DW

Определяет идентификатор управляющего элемента

Непосредственно вслед за каждой структурой DLGITEMTEMPLATE следует массив классов, определяющих классы окон управляющих элементов. Если первый элемент этого массива не равен значению 0xFFFF, ОС рассматривает этот массив как строку (заканчивающуюся нулем, в кодировке Unicode), определяющую имя зарегистрированного класса окна. Если первый элемент равен 0xFFFF значит, массив содержит один дополнительный элемент, который определяет один из системных классов (таблица 15).

Таблица 15 - Коды предопределенных системных управляющих элементов

Значение

Управляющий элемент

0x0080

Кнопка

0x0081

Поле ввода

0x0082

Статический текст

0x0083

Список

0x0084

Полоса прокрутки

0x0085

Поле типа "Combo box"

Кроме этого, приложение также должно содержать процедуру диалогового окна, необходимую для выполнения действий, связанных с диалоговым окном. Процедура диалогового окна представляет собой процедуру обратного вызова, определенную приложением, которую вызывает ОС для ввода данных. Хотя процедура диалогового окна подобна оконной процедуре, у нее нет тех же самых обязанностей.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]