在对话框中使用子窗口控件

子窗口控件定义的一般语法是:

       CONTROL 文本, ID, 类, 风格, x, y, 宽度, 高度 [, 扩展风格]

       “文本”指控件的初始化值,“ID”是子窗口向对话框过程发送WM_COMMAND中用的ID值,“类”可以是按钮(Button)、静态(Static)、编辑(Edit)、滚动条(ScrollBar)、列表框(ListBox)和组合框(ComboBox),这些类都是Windows系统中已经预定义的,“对话框管理器”在初始化的时候把每一条控件定义语句转换成下面的CreateWindow命令:

       invoke     CreateWindow, 类名, 文本, 风格, x, y, 宽度, 高度, 对话框窗口句柄, ID,

                     hInstance, NULL

正因为如此,所有可以用CreateWindow建立的子窗口都可以在资源中定义,只要知道要使用的类和风格就可以了。所以除了上面这些基本的类之外,对话框中还可以使用一些通用控件,如“日期”(SysDateTimePick32)、“月历”(SysMonthCal32)、“热键”(msctls_hotkey32)和“列表”(SysListView32)等,括号内是它们的类名,只要把定义语句的“类”写成对应的名称就可以了。

 

基于同一个预定义类的控件根据风格属性的不同,外表可能完全不同,如单选钮、复选框和分组框使用的类都是Button类,文本、图标框、位图框和线条等都是Static类。使用CONTROL语句定义的时候可能不是很直观,所以Rc.exe资源编译器允许使用另一种语法来书写控件定义:

       控件名称 [文本,] ID, x, y, 宽度, 高度 [, 风格] [, 扩展风格]

 

这里使用“控件名称”而不是“类”是因为这个名称只是Rc.exe使用的缩写,并不是真正的Windows类的名称,“控件名称”由Rc.exe解释成“类”名,同时为它使用了几种默认的风格,定义语句中风格属性实际上是附加在默认风格上的,表5.4列出了每种控件使用的类和默认属性,除了表中列出的默认属性外,每种控件还被默认定义了WS_CHILD和WS_VISIBLE属性。

                     资源脚本中使用的控件名称

控件名称

说明

基于的类

默认窗口风格

PUSHBUTTON

按钮

Button

BS_PUSHBUTTON, WS_TABSTOP

DEFPUSHBUTTON

默认按钮

Button

BS_DEFPUSHBUTTON, WS_TABSTOP

CHECKBOX

复选框

Button

BS_CHECKBOX, WS_TABSTOP

AUTOCHECKBOX

自动复选框

Button

BS_AUTOCHECKBOX, WS_TABSTOP

STATE3

3态复选框

Button

BS_3STATE, WS_TABSTOP

AUTO2STATE

自动3态复选框

Button

BS_AUTO3STATE, WS_TABSTOP

RADIOBUTTON

单选框

Button

BS_RADIOBUTTON, WS_TABSTOP

AUTORADIOBUTTON

自动单选框

Button

BS_AUTORADIOBUTTON, WS_TABSTOP

GROUPBOX

分组框

Button

BS_GROUPBOX

SCROLLBAR

滚动条

ScrollBar

SBS_HORZ

CTEXT

居中文本

Static

SS_CENTER, WS_GROUP

LTEXT

左对齐文本

Static

SS_LEFT, WS_GROUP

RTEXT

右对齐文本

Static

SS_RIGHT, WS_GROUP

ICON

图标框

Static

SS_ICON

EDITTEXT

文本编辑

Edit

ES_LEFT, WS_BORDER, WS_TABSTOP

COMBOBOX

组合框

ComboBox

CBS_SIMPLE, WS_TABSTOP

LISTBOX

列表框

ListBox

LBS_NOTIFY, WS_BORDER

 

看下面的例子:

GROUPBOX “选项”, -1, 55, 5, 120, 100

PUSHBUTTON “退出”, IDCANCEL, 255, 115, 50, 14

这两条语句和下面的语句编译后产生的二进制资源文件是一模一样的:

CONTROL “选项”, -1, “Button”, BS_GROUPBOX | WS_TABSTOP, 55, 5, 120, 100

CONTROL “退出”, IDCANCEL, “Button”, BS_PUSHBUTTON | WS_TABSTOP, 255, 115, 50, 14

 

第一种语句的用法比第二种语句不但要直观许多,而且不必书写默认的窗口风格。

当用到的控件没有缩写语法时,那就必须用CONTROL定义了,下面的两句分别定义了一条横线和一个图片框,它们并没有缩写的用法:

CONTROL “”, -1, “Static”, SS_ETCHEDHORZ | WS_CHILD | WS_VISIBLE, 60, 65, 110, 1

CONTROL BMP_ID, -1, “Static”, SS_BITMAP | WS_CHILD | WS_VISIBLE, 5, 5, 40, 95

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值