每个对话框模板指定定义对话框的外观和功能的样式值的组合。样式值可以是窗口样式,如WS_POPUP和WS_SYSMENU,以及对话框样式,如DS_MODALFRAME。模板的样式数量和类型取决于对话框的类型和目的。
创建对话框时,Windows将模板中给出的所有窗口样式传递给CreateWindowEx功能。Windows可能会根据给定的对话框样式传递一个或多个扩展样式。例如,当模板指定DS_MODALFRAME时,Windows在创建对话框时使用WS_EX_DLGMODALFRAME。当模板指定DS_SYSMODAL时,Windows使用WS_EX_TOPMOST。所有其他对话框样式都会影响Windows如何管理对话框。
大多数对话框是具有系统菜单和标题栏的弹出窗口。因此,典型的模板指定WS_POPUP,WS_SYSMENU和WS_CAPTION样式。模板还指定了一个边框样式:无模式对话框的WS_BORDER和模态对话框的DS_MODALFRAME。如果创建自定义窗口而不是对话框,模板可以指定弹出窗口之外的窗口类型(如WS_OVERLAPPED)。
Windows始终显示一个模态对话框,无论是否给出了WS_VISIBLE样式。当无模式对话框的模板指定WS_VISIBLE样式时,Windows将在创建时自动显示该对话框。否则,应用程序负责使用ShowWindow功能显示对话框。
该模板可以指定DS_SETFOREGROUND样式以强制Windows将对话框置于前景。这对于需要用户立即关注的模态对话框特别有用,无论所有者窗口是前景窗口。
使用DS_ABSALIGN样式,Windows将对话框测量解释为屏幕坐标;使用DS_SETFONT样式,Windows使用给定字体(而不是系统字体)在对话框客户区域和对话框中的控件中绘制文本; DS_NOIDLEMSG样式可防止模式对话框将WM_ENTERIDLE消息发送到所有者窗口。这些风格在后面的主题中有更详细的描述。
DS_LOCALEDIT样式不适用于基于Win32的应用程序。
具有DS_SYSMODAL样式的对话框接收WS_EX_TOPMOST窗口样式,但没有其他特殊属性或样式;这意味着即使可以显示DS_SYSMODAL对话框,用户仍然可以访问桌面上的其他窗口。