Стили шаблона  диалогового окна


Каждый шаблон диалогового окна задает комбинацию значений стиля, которые определяют внешний вид и функциональные свойства блока диалога. Значения стиля могут быть стилями окна, такими как WS_POPUP и WS_SYSMENU, и стилями диалогового окна, такими как DS_MODALFRAME. Количество и типы стилей для шаблона зависят от типа и предназначения диалогового окна.

Система передает все стили окна, заданные в шаблоне в функцию CreateWindowEx при создании диалогового окна. Система может передать один или несколько дополнительных стилей в зависимости от заданных стилей диалогового окна. Например, если шаблон задает стиль DS_MODALFRAME, то система при создании диалогового окна использует стиль WS_EX_DLGMODALFRAME.

Большинство диалоговых окон - это всплывающие окна, которые имеют системное меню и область заголовка. Поэтому, типичный шаблон устанавливает стили WS_POPUP, WS_SYSMENU и WS_CAPTION . Шаблон также задает и стиль рамки: WS_BORDER для немодальных диалоговых окон и DS_MODALFRAME для модальных блоков диалога. Шаблон может установить тип окна другой, а не всплывающий (такой как WS_OVERLAPPED), если он создает пользовательское окно вместо диалогового окна.

Система всегда показывает на экране модальное диалоговое окно независимо от того, определен ли стиль WS_VISIBLE. Когда шаблон для немодального диалогового окна задает стиль WS_VISIBLE, система автоматически показывает на экране диалоговое окно, когда оно создается. Или же, приложение несет ответственность за показ на экране диалогового окна, используя функцию ShowWindow.

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

Значение Предназначение
DS_3DLOOK Дает диалоговому окну нежирный шрифт и рисует трехмерные границы вокруг окон органов управления в диалоговом окне.

Стиль DS_3DLOOK требуется только приложениям, откомпилированным для Windows NT 3.51. Система автоматически применяет трехмерный вид диалоговым окнам, созданным приложениями, откомпилированными для Windows 95/98/Me и более поздних версий Windows NT

DS_ABSALIGN Указывает, что координаты диалогового окна - это экранные координаты. Если этот стиль не определен, координаты - клиентские координаты.
DS_CENTER Выравнивает по центру диалоговое окно в рабочей области видеомонитора, который содержит окно владельца. Если окно владелец не определено, диалоговое окно центрируется в рабочей области видеомонитора, определенного системой. Рабочая область - область, не затененная панелью задач или какой-либо панелью приложения.
DS_CENTERMOUSE Выравнивает по центру диалоговое окно относительно курсора мыши.
DS_CONTEXTHELP Включает вопросительный знак в заголовок  диалогового окна. Когда пользователь щелкает по вопросительному знаку, курсор изменяется на вопросительный знак с указателем. Если пользователь затем щелкает по органу управления в диалоговом окне, то он  получает сообщение WM_HELP. Орган управления должен передать сообщение в процедуру диалогового окна, которая должна вызвать функцию, используя команду HELP_WM_HELP. Справку приложение  показывает на экране как всплывающее окно, которое обычно содержит справку  об органе управления.
Обратите внимание! на то, что это DS_CONTEXTHELP - только имя - заместитель. Когда диалоговое окно создается, система проверяет флажок DS_CONTEXTHELP и, если он есть, добавляет флажок  WS_EX_CONTEXTHELP к расширенному стилю диалогового окна. WS_EX_CONTEXTHELP не может использоваться с стилями WS_MAXIMIZEBOX или WS_MINIMIZEBOX.
DS_CONTROL Создает диалоговое окно, которое работает хорошо как дочернее окно другого диалогового окна, очень похожее на страницу вкладки свойств. Этот стиль дает возможность пользователю перемещаться при помощи кнопки TAB между окон органов управления дочернего диалогового окна, использовать его клавиши ускорения и так далее.
DS_FIXEDSYS Заставляет диалоговое окно использовать SYSTEM_FIXED_FONT вместо значения по умолчанию SYSTEM_FONT. Это - моноширинный шрифт, совместимый с Системным шрифтом в 16-разрядных версиях Windows ранее чем 3.0.
DS_LOCALEDIT Применяется   только в 16-разрядных приложениях. Этот стиль предписывает поля редактирования текста в диалоговом окне размещать в сегменте данных памяти приложения. В противном случае, поля редактирования текста размещают в хранилище объекта глобальной памяти.
DS_MODALFRAME Создает диалоговое окно с рамкой модального диалогового окна, которое может быть объединено областью заголовка и системным меню, при помощи определения стилей WS_CAPTION и WS_SYSMENU.
DS_NOFAILCREATE Windows 95/98/Me: Создает диалоговое окно, даже если происходят ошибки - например, если дочернее окно не может создаться, или если система не может создать специальный сегмент данных для поля редактирования текста.
DS_NOIDLEMSG Подавляет сообщения WM_ENTERIDLE, которое система в противном случае отправила бы во владельцу диалогового окна, во время, когда оно показывается на экране.
DS_SETFONT Обозначает, что заголовок шаблона диалогового окна (стандартного или расширенного) содержит дополнительные данные, определяющие шрифт, который используется для текста в рабочей области и органах управления диалогового окна. Если возможно, система выбирает шрифт согласно заданным данным шрифта. Система передает дескриптор шрифта диалоговому окну и к каждому органу управления, отправляя им сообщение WM_SETFONT. Для описаний формата этих данных шрифта, см. описание структур DLGTEMPLATE и DLGTEMPLATEEX.

Если ни DS_SETFONT, ни DS_SHELLFONT не определены, шаблон диалогового окна не включает в себя данные шрифта. 

DS_SETFOREGROUND Заставляет систему использовать функцию SetForegroundWindow, чтобы привести диалоговое окно в высокоприоритетное состояние. Этот стиль полезен для модальных диалоговых окон, которые требуют немедленного внимания от пользователя независимо от того, является ли окно владелец приоритетным окном.

 Windows 98/Me, Windows 2000/XP: Система ограничивает процессы, которые могут установить высокоприоритетное окно. Дополнительную информацию, см. статье Приоритетные и фоновые окна

DS_SHELLFONT Указывает, что диалоговое окно должно использовать системный шрифт. Член структуры typeface расширенного шаблона диалогового окна должен быть установлен в MS Shell Dlg. Или же, этот стиль не имеет никакого действия. Также рекомендуется, чтобы Вы использовали ресурс DIALOGEX, а не ресурс DIALOG. Дополнительную информацию, см. в статье Шрифты диалогового окна.

Система выбирает шрифт, используя данные шрифта, заданные в членах pointsize, weight и italic. Система передает дескриптор шрифта  диалоговому окну и к каждому органу управления, отправляя им сообщение WM_SETFONT . Для описаний формата этих данных шрифта, см. описание DLGTEMPLATEEX.

Если ни DS_SHELLFONT, ни DS_SETFONT не определены, расширенный шаблон диалогового окна не включает в себя данные о шрифте. 

DS_SYSMODAL Этот стиль является устаревшим и включается для совместимости с 16-разрядными версиями Windows. Если Вы задаете этот стиль, система создает диалоговое окно со стилем WS_EX_TOPMOST. Этот стиль не препятствует пользователю обращаться к другим окнам на рабочем столе.

 Не комбинируйте этот стиль со стилем DS_CONTROL

 

Назад в оглавление
На главную страницу

Hosted by uCoz