DLGTEMPLATEEX

【勇芳软件工作室】汉化HomePreviousNext

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

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

// typedef struct {en

// WORD dlgVer;

// WORD签名

// DWORD helpID;

// DWORD exStyle;

// DWORD style;

// WORD cDlgItems;

// short x;

// short y;

// short cx;

//短cy

// sz_Or_Ord菜单//菜单资源的名称或序号

// sz_Or_Ord windowClass; //窗口类的名称或序数

// WCHAR title [【titleLen】]; //对话框的标题字符串

// short pointize; //只有设置了DS_SETFONT标志

//重量轻//只有设置了DS_SETFONT标志

//短bItalic; //只有设置了DS_SETFONT标志

// WCHAR font [【fontLen】]; //字体名称,如果DS_SETFONT设置

// } DLGTEMPLATEEX;

会员

dlgVer

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

签名

指定扩展对话框模板的版本号。该成员必须指定1。

helpID

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

扩展风格

指定窗口的扩展样式。此成员不用于创建对话框,但使用对话框模板的应用程序可以使用它来创建其他类型的窗口。

样式

指定对话框的样式。该成员可以是窗口样式值(如WS_CAPTION和WS_SYSMENU)以及一个或多个以下对话框样式值的组合。

含义
DS_3DLOOK给对话框一个非粗体字体,并在对话框中的控制窗口周围绘制三维边框。

DS_3DLOOK样式仅在Windows 95或Windows NT 4.0之前的Windows版本的基于Win32的应用程序中才需要。系统会自动将三维外观应用于为当前版本的Windows编译的应用程序创建的对话框。

DS_ABSALIGN表示对话框的坐标是屏幕坐标。如果未指定此样式,系统将其视为客户端坐标。
DS_CENTER将工作区中的对话框居中;也就是说,该区域不被托盘遮蔽。
DS_CENTERMOUSE将鼠标光标居中在对话框中。
DS_CONTEXTHELP在对话框的标题栏中包含一个问号。当用户点击问号时,光标将变为具有指针的问号。如果用户然后在对话框中单击控件,则控件会接收到WM_HELP消息。该控件应该将消息传递给对话过程,该过程应使用HELP_WM_HELP命令调用WinHelp函数。“帮助”应用程序显示一个通常包含控件帮助的弹出窗口。

请注意,DS_CONTEXTHELP只是占位符。创建对话框时,系统将检查DS_CONTEXTHELP,如果存在,则将WS_EX_CONTEXTHELP添加到对话框的扩展样式。您不能将WS_EX_CONTEXTHELP样式与WS_MAXIMIZEBOX或WS_MINIMIZEBOX样式一起使用。

DS_CONTROL创建一个对话框,作为另一个对话框的子窗口,非常像属性表中的页面。此样式允许用户在子对话框的控制窗口之间进行制表,使用其加速键等。
DS_FIXEDSYS导致对话框使用SYSTEM_FIXED_FONT而不是默认的SYSTEM_FONT。SYSTEM_FIXED_FONT是与3.0版之前的Windows版本中的系统字体兼容的等宽字体。
DS_LOCALEDIT仅适用于16位应用程序。此样式指示对话框中的编辑控件,以从应用程序的数据段分配内存。否则,编辑控件从全局内存对象分配存储。
DS_MODALFRAME通过指定WS_CAPTION和WS_SYSMENU样式,创建一个可以与标题栏和“系统”菜单组合的模态对话框框的对话框。
DS_NOFAILCREATE仅Windows 95:即使发生错误__,也可以创建对话框,如果无法创建子窗口或者系统无法为编辑控件创建特殊的数据段。
DS_NOIDLEMSG在显示对话框时,禁止Windows发送给对话框所有者的WM_ENTERIDLE消息。
DS_SETFONT表示扩展对话框模板的DLGTEMPLATEEX标头包含四个额外的成员(的pointsize重量bItalic字形),它们描述用于客户区域和控件中的文本的字体的对话框。如果可能,系统将根据这些成员中指定的值创建一个字体。然后,系统将字体的句柄传递给对话框,并向每个控件发送WM_SETFONT消息。

如果未指定此样式,扩展对话框模板不包括的pointsize重量bItalic字形成员。

DS_SETFOREGROUND使系统使用SetForegroundWindow功能将对话框置于前景。
DS_SYSMODAL创建一个系统模式对话框。此样式使对话框具有WS_EX_TOPMOST样式。否则,当对话框显示时,它对对话框或系统中其他窗口的行为没有影响。

cDlgItems

指定对话框中的控件数。

x

指定对话框左上角的x坐标,以对话框为单位。

y

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

cx

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

cy

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

菜单

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

windowClass

指定用于标识对话框的窗口类的16位元素的可变长度数组。如果数组的第一个元素为0x0000,则系统将使用预定义的对话框类作为对话框,并且该数组没有其他元素。如果第一个元素为0xFFFF,则该数组有一个额外的元素,用于指定预定义的系统窗口类的序数值。如果第一个元素具有任何其他值,则系统将该数组视为一个以空值终止的Unicode字符串,该Unicode字符串指定注册窗口类的名称。

标题

指定包含对话框标题的以null结尾的Unicode字符串。如果该数组的第一个元素是0x0000,对话框没有标题,数组没有其他元素。

的pointsize

指定对话框及其控件中用于文本的字体的点大小。只有样式成员指定DS_SETFONT样式,的pointsize重量bItalic字形成员才会存在于扩展对话框模板中。

重量

指定字体在0到1000之间的权重。这可以是lfWeight结构lfWeight成员列出的任何值。此成员仅在样式成员指定DS_SETFONT时才存在。

bItalic

指示字体是否是斜体。如果该值为TRUE,则该字体为斜体。该成员仅在样式成员指定DS_SETFONT时才存在。

字形

指定一个以null结尾的Unicode字符串,其中包含字体的字体名称。只有当样式成员指定DS_SETFONT时,该成员才会存在。

备注

您可以在CreateDialogIndirectParamDialogBoxIndirectParam功能和CreateDialogIndirectDialogBoxIndirect宏中使用扩展对话框模板而不是标准对话框模板。标准对话框模板使用DLGTEMPLATEDLGITEMTEMPLATE结构。

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

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

菜单windowClass标题字形阵列必须在WORD边界上对齐。

如果您在菜单windowClass标题字形数组中指定字符串,则必须使用Unicode字符串。要创建适用于Windows NT和Windows 95的代码,请使用MultiByteToWideChar函数来生成这些Unicode字符串。

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

也可以看看

CreateDialogIndirect, CreateDialogIndirectParam, DialogBoxIndirect, DialogBoxIndirectParam, DLGITEMTEMPLATE, DLGITEMTEMPLATEEX, DLGTEMPLATE, MapDialogRect, MultiByteToWideChar, WM_SETFONT