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