Органы управления диалогового окна
Шаблон устанавливает позицию, ширину, высоту, стиль, идентификаторы и класс окна для каждого органа управления в диалоговом окне. Система создает каждый орган управления путем передачи их данных в функцию CreateWindowEx. Органы управления создаются по порядку, в котором они определены в шаблоне. Шаблон должен определять соответствующее число, тип и порядок органов управления, чтобы гарантировать, что пользователь сможет сделать ввод необходимых данных, чтобы завершить задачу, связанную с диалоговым окном.
Для каждого органа управления шаблон устанавливает значения стиля, которые определяют внешний вид и работу органа управления. Каждый орган управления - это дочернее окно и, поэтому, должно иметь стиль WS_CHILD. Чтобы гарантировать, что орган управления видимый, когда на экране показывается диалоговое окно, каждый орган управления должен иметь также и стиль WS_VISIBLE. Другие, обычно используемые стили окна - это WS_BORDER для органов управления, которые не обязательно имеют рамки, WS_DISABLED для органов управления, которые должны быть блокированы, когда создается первоначальное диалоговое окно и WS_TABSTOP и WS_GROUP для органов управления, к которым можно обращаться, используя клавиатуру. Стили WS_TABSTOP и WS_GROUP используются совместно с клавиатурным интерфейсом диалога, рассмотренным позже в этой главе.
Шаблон может также установить стили, специфические для класса окна органа управления. Например, шаблон, который определяет кнопку управления, должен дать ей стиль, такой как BS_PUSHBUTTON или BS_CHECKBOX. Система передает стили органов управления в оконную процедуру этого элемента через посредство сообщения WM_CREATE, разрешая процедуре приспосабливать внешний вид и работу органа управления.
Система преобразует значения координат позиции, размеры ширины и высоты из базовых единиц измерения диалогового окна в пиксели, перед передачей их в функцию CreateWindowEx. Когда система создает орган управления, она определяет диалоговое окно как родительское окно. Это означает, что система всегда воспринимает координаты позиции органа управления как рабочие координаты, относительно верхнего левого угла рабочей области диалогового окна.
Шаблон определяет класс окна для каждого органа управления. Обычно диалоговое окно содержит органы управления, принадлежащие предопределенным классам окна органов управления, такие как класс окна кнопки и поля редактирования. В этом случае, шаблон определяет класс окна путем присваивания соответствующего предопределенного значения атома класса. Когда диалоговое окно содержит орган управления, принадлежащий классу окна пользовательского органа управления, шаблон дает имя этому зарегистрированному классу окна или значение атома, в настоящее время связанного с этим именем.
Каждый орган управления в диалоговом окне должен иметь уникальный идентификатор для отличия его от других элементов управления. Органы управления отправляют информацию процедуре диалогового окна через посредство сообщения WM_COMMAND, так что идентификаторы органов управления необходимы процедуре, чтобы различать, какой орган управления отправил данное сообщение. Единственное исключение из этого правила - идентификаторы статических органов управления. Статические органы управления не требуют уникального идентификатора, поскольку они отправляются без сообщения WM_COMMAND.
Чтобы разрешить пользователю закрыть диалоговое окно, шаблон должен установить, по крайней мере, одну командную кнопку и присвоить ей идентификатор управления IDCANCEL. Чтобы разрешить пользователю выбирать между завершением и отменой задачи связанной с диалоговым окном, шаблон должен установить две командные кнопки. с надписями ОК и Отменить (Cancel), с управляющими идентификаторами IDOK и IDCANCEL, соответственно.
Шаблон устанавливает также и необязательный текст и данные для создания органа управления. Текст обычно предназначен для обозначения кнопок управления или установки начального содержания текста статического органа управления. Данные для создания - это один или несколько байтов данных, которые система передает оконной процедуре органа управления, когда элемент управления создается. Данные для создания полезны для органов управления, которые требуют дополнительной информации о их начальном содержании или стиле, чем это дается другими данными. Например, прикладная программа может использовать данные для создания, чтобы установить начальные параметры и диапазон управления полосой прокрутки.