DLGITEMTEMPLATE结构定义对话框中控件的尺寸和样式。这些结构中的一个或多个与DLGTEMPLATE结构组合以形成对话框的标准模板。
typedef struct { // DLIT
DWORD style;
DWORD dwExtendedStyle;
short x;
short y;
short cx;
short cy;
WORD id;
} DLGITEMTEMPLATE;
会员
样式
指定控件的样式。该成员可以是窗口样式值(例如WS_BORDER)和一个或多个控件样式值(如BS_PUSHBUTTON和ES_LEFT)的组合。
dwExtendedStyle
指定窗口的扩展样式。该成员不用于在对话框中创建控件,但使用对话框模板的应用程序可以使用它来创建其他类型的窗口。
x
指定控件左上角的【x】 - 对齐框单位。该坐标始终相对于对话框的客户区域的左上角。
y
指定控件左上角的【y】 - 对齐框单位。该坐标始终相对于对话框的客户区域的左上角。
cx
指定控件的宽度(以对话框为单位)。
cy
指定控件的高度(以对话框为单位)。
id
指定控制标识符。
备注
在对话框的标准模板中,DLGITEMTEMPLATE结构总是紧跟着三个可变长度的数组,指定控件的类,标题和创建数据。每个阵列由一个或多个16位元素组成。
模板中的每个DLGITEMTEMPLATE结构必须在DWORD边界上对齐。类和标题数组必须在WORD边界上对齐。创建数据数组必须在DWORD边界上对齐。
紧随每个DLGITEMTEMPLATE结构是一个类数组,用于标识控件的窗口类。如果此数组的第一个元素是除0xFFFF之外的任何值,则系统将该数组视为一个空值终止的Unicode字符串,该字符串指定注册的窗口类的名称。如果第一个元素是0xFFFF,则该数组有一个额外的元素指定预定义的系统类的序数值。序数可以是以下原子值之一。
值 | 含义 |
0x0080 | 按键 |
0x0081 | 编辑 |
0x0082 | 静态的 |
0x0083 | 列表框 |
0x0084 | 滚动条 |
0x0085 | 组合框 |
类数组之后是包含控件的初始文本或资源标识符的标题数组。如果该数组的第一个元素为0xFFFF,则该数组有一个额外的元素,指定可执行文件中的资源(例如图标)的序数值。您可以使用控件的资源标识符(如静态图标控件)来加载和显示图标或其他资源而不是文本。如果第一个元素是除0xFFFF之外的任何值,则系统将该数组视为指定初始文本的以空值为终止的Unicode字符串。
创建数据数组从标题数组的下一个DWORD边界开始。此创建数据可以是任何大小和格式。如果创建数据数组的第一个字节不为零,则表示创建数据(包括大小字节)的大小(以字节为单位)。控件的窗口过程必须能够解释数据。当系统创建控件时,它将向发送到控件的WM_CREATE消息的【lParam的】参数中传递一个指向该数据的指针。
如果您在类和标题数组中指定字符串,则必须使用Unicode字符串。要创建适用于Windows NT和Windows 95的代码,请使用MultiByteToWideChar函数来生成这些Unicode字符串。
x,y,cx和cy成员以对话框为单位指定值。您可以使用MapDialogRect功能将这些值转换为屏幕单位(像素)。
也可以看看
CreateDialogIndirect, CreateDialogIndirectParam, CreateWindowEx, DialogBoxIndirect, DialogBoxIndirectParam, DLGITEMTEMPLATEEX, DLGTEMPLATE, DLGTEMPLATEEX, MapDialogRect, MultiByteToWideChar, WM_CREATE