6.31.2 2 - Структура DLGTEMPLATE

Структура DLGTEMPLATE определяет габариты и стиль диалогового окна. Эта структура, всегда первая в стандартном шаблоне для блока диалога, а также определяет число органов управления в диалоговом окне и, следовательно, определяет число последующих структур DLGITEMTEMPLATE в шаблоне.

Синтаксис

typedef struct 
{			 
	DWORD style;
	DWORD dwExtendedStyle;
	WORD cdit;
	short x;
	short y;
	short cx;
	short cy;
} DLGTEMPLATE;

Члены структуры
style
Определяет стиль диалогового окна. Этот член структуры может быть комбинацией значений стиля окна (таких как WS_CAPTION и WS_SYSMENU) и одного или большего количества следующих значений стиля блока диалога:

dwExtendedStyle
Определяет расширенные стили для окна. Этот член структуры не используется для создания диалогового окна, но прикладные программы, которые используют шаблоны блока диалога, могут использовать его, чтобы создать другие типы окон.
cdit
Определяет число элементов в диалоговом окне.
x
Устанавливает x-координату, в единицах измерения диалогового окна, левого верхнего угла блока диалога.
y
Устанавливает y-координату, в единицах измерения диалогового окна, левого верхнего угла блока диалога.
cx
Устанавливает ширину, в единицах измерения диалогового окна, блока диалога.
cy
Устанавливает высоту, в единицах измерения диалогового окна, блока диалога.

Замечания
В стандартном шаблоне для блока диалога, структура DLGTEMPLATE всегда непосредственно сопровождается тремя массивами переменной длины, которые определяют меню, класс и заголовок для диалогового окна. Когда дается стиль DS_SETFONT, эти массивы сопровождаются к тому же 16-разрядным значением, определяющим размер в пунктах, а другой массив переменной длины определяет название шрифта. Каждый массив состоит из одного или большего числа 16-разрядных элементов. Меню, класс, заголовок и массивы шрифта должны быть выровнены по границам СЛОВА (WORD).
Непосредственно после структуры DLGTEMPLATE - массив меню, который идентифицирует ресурс меню для блока диалога. Если первый элемент этого массива - 0x0000, у диалогового окна нет никакого меню, и массив не имеет никаких других элементов. Если первый элемент - 0xFFFF, массив имеет один дополнительный элемент, который определяет порядковое значение ресурса меню в исполняемом файле. Если первый элемент имеет какое-либо другое значение, система обрабатывает массив как строку Уникода с нулевым символом в конце, которая определяет название ресурса меню в исполняемом файле.
После массива меню - массив класса, который идентифицирует класс окна органа управления. Если первый элемент массива - 0x0000, система использует предопределенный класс диалогового окна для блока диалога, и массив не имеет никаких других элементов. Если первый элемент - 0xFFFF, массив имеет один дополнительный элемент, который определяет порядковое значение предопределенного системного класса окна. Если первый элемент имеет любое другое значение, система обрабатывает массив как строку Уникода с нулевым символом в конце, которая устанавливает имя зарегистрированного класса окна.
После массива класса - массив заголовка, определяющий строку Уникода с нулевым символом в конце, которая содержит заголовок диалогового окна. Если первый элемент этого массива - 0x0000, диалоговое окно не имеет никакого заголовка, а массив не имеет никаких других элементов.
16-разрядное значение размера шрифта в пунктах и массив шрифта следуют за массивом заголовка, но только тогда, если элемент style структуры определяет стиль DS_SETFONT. Значение кегля в пунктах определяет размер в пунктах шрифта, который используется для текста в диалоговом окне и его органах управления. Массив шрифта является строкой Уникода с нулевым символом в конце, определяющей название гарнитуры для шрифта. Когда эти значения даются, Windows создает шрифт, имеющий данный размер и гарнитуру (если возможно) и отправляет сообщение WM_SETFONT процедуре диалогового окна и оконным процедурам элементов управления, поскольку оно создает блок диалога и органы управления.
После заголовка DLGTEMPLATE в стандартном шаблоне диалогового окна имеется одна или несколько структур DLGITEMTEMPLATE, которые определяют габариты и стиль органов управления в блоке диалога. Член структуры cdit определяет число структур DLGITEMTEMPLATE в шаблоне. Эти структуры DLGITEMTEMPLATE должны быть выровнены по границам ДВОЙНОГО СЛОВА (DWORD).
Если Вы определяете строки символов в меню, классе, заголовке, или массивах шрифта, Вы должны использовать строки Уникода. Чтобы создать код, который работает, и в Windows NT, и в Windows 95, используйте функцию MultiByteToWideChar, чтобы генерировать эти строки Уникода.
Члены структуры x, y, cx, и cy устанавливают значения в единицах измерения диалогового окна. Вы можете преобразовывать эти значения в экранные единицы измерения (пиксели), используя функцию MapDialogRect.

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

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

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

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