6.31.2 5 - Псевдоструктура DLGTEMPLATEEX

Структура DLGTEMPLATEEX не определена в каком-либо стандартном заголовочном файле. Определение структуры предусмотрено здесь, чтобы объяснить формат расширенного шаблона для диалогового окна.
Расширенный шаблон диалогового окна начинается с заголовка DLGTEMPLATEEX, который описывает блок диалога и определяет число органов управления в диалоговом окне. Для каждого элемента управления в блоке диалога, расширенный шаблон диалогового окна имеет блок данных, который использует формат DLGITEMTEMPLATEEX, чтобы описать орган управления.

//typedef struct {
//	WORD dlgVer;
//	WORD signature;
//	DWORD helpID;
//	DWORD exStyle;
//	DWORD style;
//	WORD cDlgItems;
//	short x;
//	short y;
//	short cx;
//	short cy;
//	sz_Or_Ord menu;         	// название или порядковое число ресурса меню
//	sz_Or_Ord windowClass; 	// название или порядковое число  класса окна
//	WCHAR title[titleLen];   	// строка заголовка диалогового окна
//	short pointsize;       	// только если установлен флаг DS_SETFONT
//	short weight;          	// только если установлен флаг DS_SETFONT
//	short bItalic;         	// только если установлен флаг DS_SETFONT
//	WCHAR font[fontLen]; 	// название гарнитуры, если установлен флаг DS_SETFONT
//} DLGTEMPLATEEX;

Члены структуры
dlgVer
Указывает, не является ли шаблон расширенным шаблоном диалогового окна. Значение 0xFFFF указывает на расширенный шаблон блока диалога. В этом случае, член структуры signature определяет номер версии шаблона. Если dlgVer - любое другое значение, а не 0xFFFF, это - стандартный шаблон, который использует структуры DLGTEMPLATE и DLGITEMTEMPLATE.
signature
Определяет номер версии расширенного шаблона диалогового окна. Этот член структуры должен установить 1.
helpID
Определяет идентификатор контекста справки для окна блока диалога. Когда система отправляет сообщение WM_HELP, она передает это значение в член dwContextId структуры HELPINFO.
exStyle
Определяет расширенные стили для окна. Этот элемент структуры не используется для создания диалогового окна, однако, прикладные программы, которые используют шаблоны блока диалога, могут использовать его, чтобы создать другие типы окон.
style
Определяет стиль диалогового окна. Этот член структуры может быть комбинацией значений стиля окна (типа WS_CAPTION и WS_SYSMENU) и одного или нескольких следующих значений стиля блока диалога.

cDlgItems
Определяет число органов управления в диалоговом окне.
x
Определяет x-координату, в единицах измерения диалогового окна, левого верхнего угла блока диалога.
y
Определяет y-координату, в единицах измерения диалогового окна, левого верхнего угла блока диалога.
cx
Определяет ширину, в единицах измерения диалогового окна, блока диалога.
cy
Определяет высоту, в единицах измерения диалогового окна, блока диалога.
menu
Определяет массив переменной длины 16-разрядных элементов, который идентифицирует ресурс меню для диалогового окна. Если первый элемент этого массива - 0x0000, у блока диалога нет меню, а у массива нет других элементов. Если первый элемент - 0xFFFF, массив имеет один дополнительный элемент, который определяет порядковое значение ресурса меню в исполняемом файле. Если первый элемент имеет какое-либо другое значение, система обрабатывает массив как строку Уникода с нулевым символом в конце, которая определяет название ресурса меню в исполняемом файле.
windowClass
Определяет массив переменной длины 16-разрядных элементов, который идентифицирует класс диалогового окна. Если первый элемент этого массива является 0х0000, система использует предопределенный класс диалогового окна, а у массива нет других элементов. Если первый элемент является 0xFFFF, массив имеет один дополнительный элемент, который определяет порядковое значение предопределенного системного класса окна. Если первый элемент этого массива является каким-либо другим значением, система обрабатывает массив как строку Уникода с нулевым символом в конце, которая определяет название зарегистрированного класса окна.
title
Определяет строку Уникода с символом нуля в конце, которая содержит заголовок диалогового окна. Если первый элемент этого массива - 0x0000, у блока диалога нет никакого заголовка, а у массива нет никаких других элементов.
pointsize
Определяет размер шрифта в пунктах, который используется для текста в диалоговом окне и его органах управления. Члены pointsize, weight, bItalic и font присутствуют в расширенном шаблоне блока диалога, только тогда, если член структуры style определяет стиль DS_SETFONT.
weight
Определяет толщину шрифта в диапазоне от 0 до 1000. Она может быть любой из значений, перечисленных для члена lfWeight структуры LOGFONT. Этот член структуры присутствует, только тогда, если член style определяет DS_SETFONT.
bItalic
Указывает, является ли шрифт курсивным. Если это значение - ИСТИНА (TRUE), шрифт курсивный. Этот элемент структуры присутствует, только тогда, если член style определяет DS_SETFONT.
font
Определяет строку Уникода с символом нуля в конце, которая содержит название гарнитуры для шрифта. Этот элемент структуры присутствует, только тогда, если член style определяет DS_SETFONT.

Замечания
Вы можете использовать расширенный шаблон диалогового окна вместо стандартного шаблона блока диалога в функциях CreateDialogIndirectParam и DialogBoxIndirectParam и макрокомандах CreateDialogIndirect и DialogBoxIndirect. Стандартный шаблон диалогового окна использует структуры DLGTEMPLATE и DLGITEMTEMPLATE.
После заголовка в расширенном шаблоне диалогового окна DLGTEMPLATEEX располагаются одна или несколько структур DLGITEMTEMPLATEEX, которые описывают органы управления блока диалога. Член структуры cDlgItems определяет число структур DLGITEMTEMPLATEEX в шаблоне.
Каждая структура DLGITEMTEMPLATEEX в шаблоне должна быть выровнена по границе ДВОЙНОГО СЛОВА (DWORD). Если член style определяет стиль DS_SETFONT, первая структура DLGITEMTEMPLATEEX начинается на первой границе ДВОЙНОГО СЛОВА (DWORD) после строки font. Если стиль DS_SETFONT не установлен, первая структура начинается на первой границе ДВОЙНОГО СЛОВА (DWORD) после строки title.
Массивы menu, windowClass, title и font должны быть выровнены по границам СЛОВА (WORD).
Если Вы определяете строки символов в массивах menu, windowClass, title и font, Вы должны использовать строки Уникода. Чтобы создать код, который работает, и в Windows NT и в Windows 95, используйте функцию MultiByteToWideChar, чтобы генерировать эти строки Уникода.
Члены структуры x, y, cx, и cy определяют значения в единицах измерения диалогового окна. Вы можете преобразовать эти значения в экранные единицы измерения (пиксели), используя функцию MapDialogRect.

Смотри также
CreateDialogIndirect, CreateDialogIndirectParam, DialogBoxIndirect, DialogBoxIndirectParam, DLGITEMTEMPLATE, DLGITEMTEMPLATEEX, DLGTEMPLATE, MapDialogRect, MultiByteToWideChar, WM_SETFONT

Размещение и совместимость DLGTEMPLATEEX

Windows NT			Да 
Win95				Да 
Win32s				Нет 
Импортируемая библиотека		- 
Заголовочный файл			- 
Unicode				Нет 
Замечания по платформе		Не имеется

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Владимир Соковиков - 15.06.2002