DLGTEMPLATEEX 结构

扩展对话框模板以 DLGTEMPLATEEX 标头开头,该标头描述对话框并指定对话框中的控件数。 对于对话框中的每个控件,扩展对话框模板都有一个数据块,该块使用 DLGITEMTEMPLATEEX 格式来描述控件。

DLGTEMPLATEEX 结构未在任何标准头文件中定义。 此处提供了结构定义,用于说明对话框的扩展模板的格式。

语法

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];
  WORD      pointsize;
  WORD      weight;
  BYTE      italic;
  BYTE      charset;
  WCHAR     typeface[stringLen];
} DLGTEMPLATEEX;

成员

dlgVer

类型: WORD

扩展对话框模板的版本号。 此成员必须设置为 1。

签名

类型: WORD

指示模板是否为扩展对话框模板。 如果 签名 是0xFFFF,则这是一个扩展对话框模板。 在这种情况下, dlgVer 成员指定模板版本号。 如果 签名 是除 0xFFFF 以外的任何值,则这是使用 DLGTEMPLATEDLGITEMTEMPLATE 结构的标准对话框模板。

helpID

类型:DWORD

对话框窗口的帮助上下文标识符。 当系统发送WM_HELP消息时,它会在 HELPINFO 结构的 wContextId 成员中传递此值。

exStyle

类型:DWORD

扩展窗口样式。 创建对话框时不使用此成员,但使用对话框模板的应用程序可以使用它来创建其他类型的窗口。 有关值列表,请参阅 扩展窗口样式

style

类型:DWORD

对话框的样式。 此成员可以是 窗口样式值对话框样式值的组合。

如果 style 包括 DS_SETFONTDS_SHELLFONT 对话框样式,则扩展对话框模板的 DLGTEMPLATEEX 标头包含四个附加成员, ( 指向粗细斜体字样) ,用于描述要用于工作区中的文本的字体和对话框控件。 如果可能,系统会根据这些成员中指定的值创建字体。 然后,系统会向对话框和每个控件发送 WM_SETFONT 消息,以提供字体的句柄。

有关详细信息,请参阅 对话框字体

cDlgItems

类型: WORD

对话框中的控件数。

x

类型: short

对话框左上角的 x 坐标(以对话框单位为单位)。

y

类型: short

对话框左上角的 y 坐标(以对话框单位为单位)。

cx

类型: short

对话框的宽度(以对话框单位为单位)。

cy

类型: short

对话框的高度(以对话框单位为单位)。

菜单

类型: sz_Or_Ord

一个由 16 位元素构成的可变长度数组,用于标识对话框的菜单资源。 如果此数组的第一个元素0x0000,则对话框没有菜单,并且数组没有其他元素。 如果第一个元素0xFFFF,则数组有一个附加元素,用于指定可执行文件中菜单资源的序号值。 如果第一个元素具有任何其他值,系统会将数组视为以 null 结尾的 Unicode 字符串,该字符串指定可执行文件中的菜单资源的名称。

windowClass

类型: sz_Or_Ord

一个由 16 位元素构成的可变长度数组,用于标识对话框的窗口类。 如果数组的第一个元素0x0000,则系统将预定义的对话框类用于对话框,并且数组没有其他元素。 如果第一个元素0xFFFF,则数组具有一个指定预定义系统窗口类的序号值的附加元素。 如果第一个元素具有任何其他值,系统将数组视为以 null 结尾的 Unicode 字符串,该字符串指定已注册的窗口类的名称。

title

类型: WCHAR[titleLen]

对话框的标题。 如果此数组的第一个元素0x0000,则对话框没有标题,数组没有其他元素。

pointsize

类型: WORD

要用于对话框中文本及其控件的字体的点大小。

仅当 样式 成员指定 DS_SETFONTDS_SHELLFONT时,此成员才存在。

weight

类型: WORD

该字体的粗细。 请注意,尽管这可以是为 LOGFONT 结构的 lfWeight 成员列出的任何值,但使用的任何值将自动更改为FW_NORMAL

仅当 样式 成员指定 DS_SETFONTDS_SHELLFONT时,此成员才存在。

斜体

类型: BYTE

指示字体是否为斜体。 如果此值为 TRUE,则字体为斜体。

仅当 样式 成员指定 DS_SETFONTDS_SHELLFONT时,此成员才存在。

charset

类型: BYTE

要使用的字符集。 有关详细信息,请参阅 LOGFONTlfcharset 成员。

仅当 样式 成员指定 DS_SETFONTDS_SHELLFONT时,此成员才存在。

字体

类型: WCHAR[stringLen]

字体的字样的名称。

仅当 样式 成员指定 DS_SETFONTDS_SHELLFONT时,此成员才存在。

备注

可以在 CreateDialogIndirectParam、DialogBoxIndirectParam、CreateDialogIndirectDialogBoxIndirect 函数中使用扩展对话框模板,而不是标准对话框模板。

扩展对话框模板中的 DLGTEMPLATEEX 标头之后是描述对话框控件的一个或多个 DLGITEMTEMPLATEEX 结构。 DLGITEMTEMPLATEEX 结构的 cDlgItems 成员指定模板中遵循的 DLGITEMTEMPLATEEX 结构的数量。

模板中的每个 DLGITEMTEMPLATEEX 结构必须在 DWORD 边界上对齐。 如果样式成员指定DS_SETFONTDS_SHELLFONT样式,则第一个 DLGITEMTEMPLATEEX 结构从字样字符串后的第一个 DWORD 边界开始。 如果未指定这些样式,则第一个结构从标题字符串后的第一个 DWORD 边界开始。

菜单windowClass标题字样数组必须在 WORD 边界上对齐。

如果在 菜单windowClasstitletypeface 数组中指定字符串,则必须使用 Unicode 字符串。 使用 MultiByteToWideChar 函数从 ANSI 字符串生成这些 Unicode 字符串。

xycxcy 成员以对话框单位指定值。 可以使用 MapDialogRect 函数将这些值转换为) (像素的屏幕单位。

要求

要求
最低受支持的客户端
Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器
Windows 2000 Server [仅限桌面应用]

另请参阅

引用

CreateDialogIndirect

CreateDialogIndirectParam

DialogBoxIndirect

DialogBoxIndirectParam

DLGITEMTEMPLATEEX

MapDialogRect

WM_SETFONT

概念性

对话框

其他资源

LOGFONT

MultiByteToWideChar