每个对话框模板包含指定对话框的位置,宽度和高度及其包含的控件的度量。这些测量与设备无关,因此应用程序可以使用单个模板为所有类型的显示设备创建相同的对话框。这确保了对话框在所有屏幕上具有相同的比例和外观,尽管屏幕之间的分辨率和纵横比有所不同。
对话框测量以对话框为基础单位给出。一个水平单位等于系统字体的平均字符宽度的四分之一。一个垂直单位等于系统字体的平均字符高度的八分之一。应用程序可以使用GetDialogBaseUnits功能检索当前显示的每个基本单位的像素数。应用程序可以使用MapDialogRect函数将测量从对话框基础单位转换为像素。
模板必须指定对话框左上角的初始坐标。通常坐标相对于所有者窗口的客户区域的左上角。当模板指定DS_ABSALIGN样式或对话框没有所有者时,该位置相对于屏幕的左上角。Windows在创建对话框时设置此初始位置,但允许应用程序在显示对话框之前调整位置。例如,应用程序可以检索所有者窗口的尺寸,计算将对话框居中在所有者窗口中的新位置,然后使用SetWindowPos功能设置位置。
模板应该指定一个不超过屏幕宽度和高度的对话框宽度和高度,并确保所有控件都在对话框的客户端区域内。虽然Windows允许一个对话框是任何大小,创建一个太小或太大的对话框可以阻止用户提供输入,击败对话框的目的。当有大量控件时,许多应用程序使用多个对话框。在这种情况下,初始对话框通常包含一个或多个按钮,用户可以选择显示下一个对话框。