控件型态 窗口类别 窗口样式
PUSHBUTTON 按钮 BS_PUSHBUTTON | WS_TABSTOP
DEFPUSHBUTTON 按钮 BS_DEFPUSHBUTTON | WS_TABSTOP
CHECKBOX 按钮 BS_CHECKBOX | WS_TABSTOP
RADIOBUTTON 按钮 BS_RADIOBUTTON | WS_TABSTOP
GROUPBOX 按钮 BS_GROUPBOX | WS_TABSTOP
LTEXT 静态文字 SS_LEFT | WS_GROUP
CTEXT 静态文字 SS_CENTER | WS_GROUP
RTEXT 静态文字 SS_RIGHT | WS_GROUP
ICON 静态图标 SS_ICON
EDITTEXT 编辑 ES_LEFT | WS_BORDER | WS_TABSTOP
SCROLLBAR 滚动条 SBS_HORZ
LISTBOX 清单方块 LBS_NOTIFY | WS_BORDER | WS_VSCROLL
COMBOBOX 下拉式清单方块 CBS_SIMPLE | WS_TABSTOP
资源编译器是唯一能够识别这些缩写的程序。除了表中所示的窗口样式外,每个控件还具有下面的样式:
WS_CHILD | WS_VISIBLE
对于这些控件型态,除了EDITTEXT、SCROLLBAR、LISTBOX和COMBOBOX之外,控件叙述的格式为:
control-type "text", id, xPos, yPos, xWidth, yHeight, iStyle
对于EDITTEXT、SCROLLBAR、LISTBOX和COMBOBOX,其格式为:
control-type id, xPos, yPos, xWidth, yHeight, iStyle
其中没有文字字段。在这两种叙述中,Style参数都是选择性的。
请记住,对话框模板中指定大小的单位为平均字符宽度的1/4,及平均字符高度的1/8。
控件叙述的style字段是可选的。它允许您包含其它窗口样式标识符。例如,如果您想建立在正方形框左边包含文字的复选框,那么可以使用:
CHECKBOX "text", id, xPos, yPos, xWidth, yHeight, BS_LEFTTEXT
注意:控件型态EDITTEXT会自动添加一个边框。如果您想建立一个没有边框的子窗口编辑控件,您可以使用:
EDITTEXT id, xPos, yPos, xWidth, yHeight, NOT WS_BORDER
资源编译器也承认与下面叙述类似的专用控件叙述:
CONTROL "text", id, "class", iStyle, xPos, yPos, xWidth, yHeight
此叙述允许您通过指定窗口类别和完整的窗口样式,来建立任意型态的子窗口控件。例如,要取代:
PUSHBUTTON "OK", IDOK, 10, 20, 32, 14
您可以使用:
CONTROL "OK", IDOK, "button", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | WS_TABSTOP, 10, 20, 32, 14
当您在对话框模板中使用CONTROL叙述时,不必包含WS_CHILD和WS_VISIBLE样式。在建立子窗口时,Windows已经包含了这些窗口样式。CONTROL叙述的格式也说明
Windows对话框管理器在建立对话框时就完成了此项操作。首先,就像我前面所讨论的,它建立一个弹出式窗口,其父窗口句柄在DialogBox函数中提供。然后,对话框管理器
为对话框模板中的每个控件建立一个子窗口。所有这些控件的父窗口均是这个弹出式对话框。上面给出的CONTROL叙述被转换成一个CreateWindow呼叫,形式如下所示:
hCtrl = CreateWindow (TEXT ("button"),
TEXT ("OK"),
WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON,
10 * cxChar / 4, 20 * cyChar / 8,
32 * cxChar / 4, 14 * cyChar / 8,
hDlg,
IDOK,
hInstance,
NULL) ;
其中,cxChar和cyChar是系统字体字符的宽度和高度,以图素为单位。hDlg参数是从建立该对话框窗口的CreateWindow呼叫传回的值,hInstance参数是从DialogBox呼叫获得的。