资源文件中对话框之控件的窗口类别和窗口样式

来源:互联网 发布:做模卡用什么软件 编辑:程序博客网 时间:2024/05/22 08:02

控件型态                           窗口类别                         窗口样式 


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呼叫获得的。