搜档网
当前位置:搜档网 › usbHid

usbHid

usbHid
usbHid

一、应用场合

USB HID类是比较大的一个类,HID类设备属于人机交互操作的设备。用于控制计算机操作的一些方面,如USB鼠标,USB键盘,USB游戏操纵杆,USB触摸板,USB轨迹球、电话拨号设备、VCR遥控等等设备。另外,使用HID设备的一个好处就是,操作系统自带了HID类的驱动程序,而用户无需去开发很麻烦的驱动程序,只要直接使用API调用即可完成通信。所以很多简单的USB设备,喜欢枚举成HID设备,这样就可以不用安装驱动而直接使用。

二、USB HID类可采用的通信管道

所有的HID设备通过USB的控制管道(默认管道,即端点0)和中断管道与主机通信。

控制管道主要用于以下3个方面:

接收/响应USB主机的控制请示及相关的类数据

在USB主机查询时传输数据(如响应Get_Report请求等)

接收USB主机的数据

中断管道主要用于以下两个方面:

USB主机接收USB设备的异步传输数据

USB主机发送有实时性要求的数据给USB设备

从USB主机到USB设备的中断输出数据传输是可选的,当不支持中断输出数据传输时,USB主机通过控制管道将数据传输给USB设备。

三、与USB HID设备有关的描述符

HID设备的描述符除了5个USB的标准描述符(设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符,另一篇文章:USB开发基础--USB命令(请求)和USB描述符)外,还包括3个HID设备类特定描述符:HID描述符、报告描述符、实体描述符。

除了HID的三个特定描述符组成对HID设备的解释外,5个标准描述符中与HID设备有关的部分有:

设备描述符中bDeviceClass、bDeviceSubClass和bDeviceProtocol三个字段的值必须为零。

接口描述符中bInterfaceClass的值必须为0x03,bInterfaceSubClass的值为0或1,为1表示HID设备符是一个启动设备(Boot Device,一般对PC机而言才有意义,意思是BIOS 启动时能识别并使用您的HID设备,且只有标准鼠标或键盘类设备才能成为Boot Device。如果为0则只有在操作系统启动后才能识别并使用您的HID设备),bInterfaceProtocol的取值含义如下表所示:

下面分别对这3个HID设备类特定描述符进行说明。

1、HID描述符

HID描述符关联于接口描述符,因而如果一个设备只有一个接口描述符,则无论它有几个端点描述符,HID设备只有一个HID描述符。HID设备描述符主要描述HID规范的版本

号、HID通信所使用的额外描述符、报表描述符的长度等。表2所示为HID描述符的结构:

2、报告描述符

HID设备的报告描述符比较复杂也比较难理解。

报告描述符的语法不同于USB标准描述符,它是以项目(items)方式排列而成,无一定的长度。HID的报告描述符已经不是简简单单的描述某个值对应某个固定意义了,它已经能够组合出很多种情况,并且需要PC上的HID驱动程序提供parser解释器来对描述的设备情形进行重新解释,进而组合生成出本HID硬件设备独特的数据流格式,所以我觉得可以把它理解为“报告描述符脚本语言”更为贴切。我们使用“报告描述符”专用脚本语言,让用户来自己定义他们的HID设备都有什么数据、以及这些数据各个位(bit)都有什么意义。

有关报告描述符的详细信息可参考USB HID协议,USB 协会提供了一个HID 描述符编辑工具称作HID Descriptor Tool,用它可方便生成我们的报告描述符。

3、实体描述符

实体描述符被用来描述设备的行为特性。实体描述符是可选的描述符,HID设备可以根据其本体的设备特性选择是否包含实体描述符。表5所示为HID的实体描述符结构。

四、USB HID类命令(请求)

HID设备类特定的命令(请求)有6个,它们分别是Get_Report、Get_Idle、Get_Protocol、Set_Report、Set_Idle和Set_Protocol。

HID类请求(命令)数据包格式如表8所示:

USB主机在请求HID设备的配置描述符时,设备首先返回的描述符为:配置描述符、接口描述符、HID描述符、端点描述符。HID描述符里包含了其附属的描述的类型和长度(如报告描述符),然后主机再根据HID描述符的信息请求其相关的描述符。

一。

USB是个通用的总线,端口都是统一的。但是USB设备却各种各样,

例如USB鼠标,USB键盘,U盘等等,那么USB主机是如何识别出不同的

设备的呢?这就要依赖于描述符了。

USB的描述符主要有设备描述符,配置描述符,接口描述符,

端点描述符,字符串描述符,HID描述符,报告描述符等等。

二.USB HID报告及报告描述符简介

在USB中,USB HOST是通过各种描述符来识别设备的,有设备描述符,

配置描述符,接口描述符,端点描述符,字符串描述符,报告描述符等等。

USB报告描述符(Report Descriptor)是HID设备中的一个描述符,它是比较

复杂的一个描述符。

USB HID设备是通过报告来给传送数据的,报告有输入报告和输出报告。

输入报告是USB设备发送给主机的,例如USB鼠标将鼠标移动和鼠标点击等

信息返回给电脑,键盘将按键数据数据返回给电脑等;输出报告是主机发送

给USB设备的,例如键盘上的数字键盘锁定灯和大写字母锁定灯等。报告是

一个数据包,里面包含的是所要传送的数据。输入报告是通过中断输入端点

输入的,而输出报告有点区别,当没有中断输出端点时,可以通过控制输出

端点0发送,当有中断输出端点时,通过中断输出端点发出。

而报告描述符,是描述一个报告以及报告里面的数据是用来干什么用的。

通过它,USB HOST可以分析出报告里面的数据所表示的意思。它通过控制输入端点0返回,主机使用获取报告描述符命令来获取报告描述符,注意这个请求

是发送到接口的,而不是到设备。一个报告描述符可以描述多个报告,不同的

报告通过报告ID来识别,报告ID在报告最前面,即第一个字节。当报告描述符中没有规定报告ID时,报告中就没有ID字段,开始就是数据。更详细的说明请参看USB HID协议,该协议可从https://www.sodocs.net/doc/a014975353.html,下载。

USB报告描述符可以通过使用HID Descriptor tool来生成,这个工具可以

到https://www.sodocs.net/doc/a014975353.html,下载,为了方便大家,我顺便上传了一份。

下面通过由HID Descriptor tool生成的USB鼠标和USB键盘来说明一下报告描述符和报告。

code char KeyBoardReportDescriptor[63] = {

//表示用途页为通用桌面设备

0x05, 0x01, // USAGE_PAGE (Generic Desktop)

//表示用途为键盘

0x09, 0x06, // USAGE (Keyboard)

//表示应用集合,必须要以END_COLLECTION来结束它,见最后的END_COLLECTION

0xa1, 0x01, // COLLECTION (Application)

//表示用途页为按键

0x05, 0x07, // USAGE_PAGE (Keyboard)

//用途最小值,这里为左ctrl键

0x19, 0xe0, // USAGE_MINIMUM (Keyboard LeftControl) //用途最大值,这里为右GUI键,即window键

0x29, 0xe7, // USAGE_MAXIMUM (Keyboard Right GUI) //逻辑最小值为0

0x15, 0x00, // LOGICAL_MINIMUM (0)

//逻辑最大值为1

0x25, 0x01, // LOGICAL_MAXIMUM (1)

//报告大小(即这个字段的宽度)为1bit,所以前面的逻辑最小值为0,逻辑最大值为0x75, 0x01, // REPORT_SIZE (1)

//报告的个数为8,即总共有8个bits

0x95, 0x08, // REPORT_COUNT (8)

//输入用,变量,值,绝对值。像键盘这类一般报告绝对值,

//而鼠标移动这样的则报告相对值,表示鼠标移动多少

0x81, 0x02, // INPUT (Data,Var,Abs)

//上面这这几项描述了一个输入用的字段,总共为8个bits,每个bit表示一个按键

//分别从左ctrl键到右GUI键。这8个bits刚好构成一个字节,它位于报告的第一个字节。

//它的最低位,即bit-0对应着左ctrl键,如果返回的数据该位为1,则表示左ctrl键被按下,

//否则,左ctrl键没有按下。最高位,即bit-7表示右GUI键的按下情况。中间的几个位,

//需要根据HID协议中规定的用途页表(HID Usage Tables)来确定。这里通常用来表示

//特殊键,例如ctrl,shift,del键等

//这样的数据段个数为1

0x95, 0x01, // REPORT_COUNT (1)

//每个段长度为8bits

0x75, 0x08, // REPORT_SIZE (8)

//输入用,常量,值,绝对值

0x81, 0x03, // INPUT (Cnst,Var,Abs)

//上面这8个bit是常量,设备必须返回0

//这样的数据段个数为5

0x95, 0x05, // REPORT_COUNT (5)

//每个段大小为1bit

0x75, 0x01, // REPORT_SIZE (1)

//用途是LED,即用来控制键盘上的LED用的,因此下面会说明它是输出用0x05, 0x08, // USAGE_PAGE (LEDs)

//用途最小值是Num Lock,即数字键锁定灯

0x19, 0x01, // USAGE_MINIMUM (Num Lock)

//用途最大值是Kana,这个是什么灯我也不清楚^_^

0x29, 0x05, // USAGE_MAXIMUM (Kana)

//如前面所说,这个字段是输出用的,用来控制LED。变量,值,绝对值。//1表示灯亮,0表示灯灭

0x91, 0x02, // OUTPUT (Data,Var,Abs)

//这样的数据段个数为1

0x95, 0x01, // REPORT_COUNT (1)

//每个段大小为3bits

0x75, 0x03, // REPORT_SIZE (3)

//输出用,常量,值,绝对

0x91, 0x03, // OUTPUT (Cnst,Var,Abs)

//由于要按字节对齐,而前面控制LED的只用了5个bit,

//所以后面需要附加3个不用bit,设置为常量。

//报告个数为6

0x95, 0x06, // REPORT_COUNT (6)

//每个段大小为8bits

0x75, 0x08, // REPORT_SIZE (8)

//逻辑最小值0

0x15, 0x00, // LOGICAL_MINIMUM (0)

//逻辑最大值255

0x25, 0xFF, // LOGICAL_MAXIMUM (255)

//用途页为按键

0x05, 0x07, // USAGE_PAGE (Keyboard)

//使用最小值为0

0x19, 0x00, // USAGE_MINIMUM (Reserved (no event indicated))

//使用最大值为0x65

0x29, 0x65, // USAGE_MAXIMUM (Keyboard Application) //输入用,变量,数组,绝对值

0x81, 0x00, // INPUT (Data,Ary,Abs)

//以上定义了6个8bit宽的数组,每个8bit(即一个字节)用来表示一个按键,所以可以同时

//有6个按键按下。没有按键按下时,全部返回0。如果按下的键太多,导致键盘扫描系统

//无法区分按键时,则全部返回0x01,即6个0x01。如果有一个键按下,则这6个字节中的第一

//个字节为相应的键值(具体的值参看HID Usage Tables),如果两个键按下,则第1、

2两个

//字节分别为相应的键值,以次类推。

//关集合,跟上面的对应

0xc0 // END_COLLECTION

};

通过上面的分析,我们知道这个报告中只有一个报告,所以没有报告ID,

因此返回的都是实际使用的数据。总共有8字节输入,1字节输出。其中输入的

第一字节用来表示特殊按键,第二字节保留,后面的六字节为普通按键。如果

只有左ctrl键按下,则返回01 00 00 00 00 00 00 00(十六进制),如果

只有数字键1 按下,则返回00 00 59 00 00 00 00 00,如果数字

键1 和2 同时按下,则返回00 00 59 5A 00 00 00 00,如果

再按下左shift 键,则返回02 00 59 5A 00 00 00 00,

然后再释放1 键,则返回02 00 5A 00 00 00 00 00,

然后全部按键释放,则返回00 00 00 00 00 00 00 00。

这些数据(即报告)都是通过中断端点返回的。当按下Num Lock键时,PC会发送

输出报告,从报告描述符中我们知道,Num Lock的LED对应着输出报告的最低位,

当数字小键盘打开时,输出xxxxxxx1(二进制,打x的由其它的LED状态决定);

当数字小键盘关闭时,输出xxxxxxx0(同前)。取出最低位就可以控制数字键锁定LED了。

下面这个报告描述符是USB鼠标报告描述符,比起键盘的来说要简单些。

它描述了4个字节,第一个字节表示按键,第二个字节表示x轴(即鼠标左右移动,

0表示不动,正值表示往右移,负值表示往左移),第三个字节表示y轴(即鼠标上下移动,0表示不动,正值表示往下移动,负值表示往上移动),第四个字节表示鼠标滚轮(正值为往上滚动,负值为往下滚动)。

code char MouseReportDescriptor[52] = {

//通用桌面设备

0x05, 0x01, // USAGE_PAGE (Generic Desktop)

//鼠标

0x09, 0x02, // USAGE (Mouse)

//集合

0xa1, 0x01, // COLLECTION (Application)

//指针设备

0x09, 0x01, // USAGE (Pointer)

//集合

0xa1, 0x00, // COLLECTION (Physical)

//按键

0x05, 0x09, // USAGE_PAGE (Button)

//使用最小值1

0x19, 0x01, // USAGE_MINIMUM (Button 1)

//使用最大值3。1表示左键,2表示右键,3表示中键

0x29, 0x03, // USAGE_MAXIMUM (Button 3) //逻辑最小值0

0x15, 0x00, // LOGICAL_MINIMUM (0)

0x25, 0x01, // LOGICAL_MAXIMUM (1)

//数量为3

0x95, 0x03, // REPORT_COUNT (3)

//大小为1bit

0x75, 0x01, // REPORT_SIZE (1)

//输入,变量,数值,绝对值

//以上3个bit分别表示鼠标的三个按键情况,最低位(bit-0)为左键

//bit-1为右键,bit-2为中键,按下时对应的位值为1,释放时对应的值为0 0x81, 0x02, // INPUT (Data,Var,Abs)

//填充5个bit,补足一个字节

0x95, 0x01, // REPORT_COUNT (1)

0x75, 0x05, // REPORT_SIZE (5)

0x81, 0x03, // INPUT (Cnst,Var,Abs)

//用途页为通用桌面

0x05, 0x01, // USAGE_PAGE (Generic Desktop) //用途为X

0x09, 0x30, // USAGE (X)

//用途为Y

0x09, 0x31, // USAGE (Y)

0x09, 0x38, // USAGE (Wheel)

//逻辑最小值为-127

0x15, 0x81, // LOGICAL_MINIMUM (-127)

//逻辑最大值为+127

0x25, 0x7f, // LOGICAL_MAXIMUM (127)

//大小为8个bits

0x75, 0x08, // REPORT_SIZE (8)

//数量为3个,即分别代表x,y,滚轮

0x95, 0x03, // REPORT_COUNT (3)

//输入,变量,值,相对值

0x81, 0x06, // INPUT (Data,Var,Rel)

//关集合

0xc0, // END_COLLECTION

0xc0 // END_COLLECTION

};

通过对上面的报告分析,我们知道报告返回4个字节,没有报告ID。如果鼠标左键按下,则返回01 00 00 00(十六进制值),如果右键按下,则返回02 00 00 00,如果中键按下,则返回04 00 00 00,如果三个键同时按下,则返回07 00 00 00。如果鼠标往右移动则

第二字节返回正值,值越大移动速度越快。其它的类推。

这里只对报告描述符做一个简单的介绍,更详细的资料请参看USB HID协议以及HID

Usage Tables,

可以从https://www.sodocs.net/doc/a014975353.html,下载。

三.

一个USB设备有一个设备描述符,设备描述符里面决定了该设备有多少种配置,每种配置描述符对应着配置描述符;而在配置描述符中又定义了该配置里面有多少个接口,每个接口有对应的接口描述符;在接口描述符里面又定义了该接口有多少个端点,每个端点对应一个端点描述符;端点描述符定义了端点的大小,类型等等。由此我们可以看出,USB的描述符之间的关系是一层一层的,最上一层是设备描述符,下面是配置描述符,再下面是接口描述符,再下面是端点描述符。在获取描述符时,先获取设备描述符,然后再获取配置描述符,根据配置描述符中的配置集合长度,一次将配置描述符、接口描述符、端点描述符一起一次读回。其中可能还会有获取设备序列号,厂商字符串,产品字符串等。

每种描述符都有自己独立的编号,如下:

#define DEVICE_DESCRIPTOR 0x01 //设备描述符

#define CONFIGURATION_DESCRIPTOR 0x02 //配置描述符#define STRING_DESCRIPTOR 0x03 //字符串描述符#define INTERFACE_DESCRIPTOR 0x04 //接口描述符#define ENDPOINT_DESCRIPTOR 0x05 //端点描述符

下面分别详细介绍一下各描述符。

1.设备描述符

//定义标准的设备描述符结构

typedef struct _DEVICE_DCESCRIPTOR_STRUCT

{

BYTE blength; //设备描述符的字节数大小

BYTE bDescriptorType; //设备描述符类型编号

WORD bcdUSB; //USB版本号

BYTE bDeviceClass; //USB分配的设备类代码

BYTE bDeviceSubClass; //USB分配的子类代码

BYTE bDeviceProtocol; //USB分配的设备协议代码

BYTE bMaxPacketSize0; //端点0的最大包大小

WORD idVendor; //厂商编号

WORD idProduct; //产品编号

WORD bcdDevice; //设备出厂编号

BYTE iManufacturer; //设备厂商字符串的索引

BYTE iProduct; //描述产品字符串的索引

BYTE iSerialNumber; //描述设备序列号字符串的索引

BYTE bNumConfigurations; //可能的配置数量

}

DEVICE_DESCRIPTOR_STRUCT, * pDEVICE_DESCRIPTOR_STRUCT;

//实际的设备描述符示例

code DEVICE_DESCRIPTOR_STRUCT device_descriptor= //设备描述符

{

sizeof(DEVICE_DESCRIPTOR_STRUCT), //设备描述符的字节数大小,这里是18字节

DEVICE_DESCRIPTOR, //设备描述符类型编号,设备描述符是01

0x1001, //USB版本号,这里是USB01.10,即USB1.1。由于51是大端模式,所以高低字节交换

0x00, //USB分配的设备类代码,0表示类型在接口描述符中定义

0x00, //USB分配的子类代码,上面一项为0时,本项也要设置为0

0x00, //USB分配的设备协议代码,上面一项为0时,本项也要设置为0

0x10, //端点0的最大包大小,这里为16字节

0x7104, //厂商编号,这个是需要跟USB

组织申请的ID号,表示厂商代号。

0xf0ff, //该产品的编号,跟厂商编号一起配合使用,让主机注册该设备并加载相应的驱动程序

0x0100, //设备出厂编号

0x01, //设备厂商字符串的索引,在获取字符串描述符时,使用该索引号来识别不同的字符串

0x02, //描述产品字符串的索引,同上

0x03, //描述设备序列号字符串的索引,同上

0x01 //可能的配置数为1,即该设备只有一个配置

};

2.配置描述符

//定义标准的配置描述符结构

typedef struct _CONFIGURATION_DESCRIPTOR_STRUCT

{

BYTE bLength; //配置描述符的字节数大小

BYTE bDescriptorType; //配置描述符类型编号

WORD wTotalLength; //此配置返回的所有数据大小

BYTE bNumInterfaces; //此配置所支持的接口数量

BYTE bConfigurationValue; //Set_Configuration命令所需要的参数值

BYTE iConfiguration; //描述该配置的字符串的索引值

BYTE bmAttributes; //供电模式的选择

BYTE MaxPower; //设备从总线提取的最大电流}

CONFIGURATION_DESCRIPTOR_STRUCT, * pCONFIGURATION_DESCRIPTOR_STRUCT;

3.接口描述符

//定义标准的接口描述符结构

typedef struct _INTERFACE_DESCRIPTOR_STRUCT

{

BYTE bLength; //接口描述符的字节数大小

BYTE bDescriptorType; //接口描述符的类型编号

BYTE bInterfaceNumber; //该接口的编号

BYTE bAlternateSetting; //备用的接口描述符编号

BYTE bNumEndpoints; //该接口使用的端点数,不包括端点0

BYTE bInterfaceClass; //接口类型

BYTE bInterfaceSubClass; //接口子类型

BYTE bInterfaceProtocol; //接口遵循的协议

Visual Basic-命令按钮常用属性

命令按钮常用属性 在应用程序中,命令按钮通常在单击时执行制定操作。以前介绍的大多数属性都可用于命令按钮控件,包括Enabled、Font属性组、Width、Height、Top、Left、Visible。此外,命令按钮还具有以下属性。 (1)Caption 命令按钮上显示的标题文字,通常标题文字用于说明按钮的功能。 在实际运用中,经常需要对命令按钮绑定快捷键来方便按钮的操作,创建由ALT键加字母组合快捷键可由Caption属性进行设置。例如,需绑定ALT+E快捷键组合给一个按钮,如图4-4所示。在设置此按钮Caption属性时,在相应的字母前应加上“&”符号。即将此命令按钮的Caption属性设置为“结束(&E)”。这时,命令按钮的单击(Click)事件可由组合键ALT+E触发。 (2)Cancel 该属性可以设置ESC键与该命令按钮进行快捷键绑定。 当Cancel属性值为True时可设为绑定,在一个窗体内只允许一个命令按钮将Cancel属性设置为True。 (3)Default 该属性可以设置回车键与该命令按钮进行快捷键绑定。 当Default属性值为True时可设为绑定,在一个窗体内只允许一个命令按钮将Default属性设置为True。 (4)Style属性 Style属性可以决定命令按钮的外观样式,该属性只能在设计阶段在属性窗口内设置。该属性可用于多种控件,如单选按钮、复选框、组合框、列表框等。用于命令按钮可以取如下值:0——标准样式,即在命令按钮中只显示文本(Caption属性),没有相关图形。此为默认值。1——图形格式。控件用图形样式显示,在命令按钮中不仅显示文本(Caption属性),而且可以显示图形(Picture属性)。 (5)Picture属性 用该属性可以给命令按钮制定一个图形。为了使用此属性,必须将Style设置为1,否则Picture属性无效。

VB属性总结

4.1 标签 标签是VB中最简单的控件,用于显示字符串,通常显示的是文字说明信息。但不能编辑标签控件。 使用标签的情况很多,通常用标签来标注本身不具有Caption属性的控件。例如,可用标签为文本框、列表框、组合框等控件来添加描述性的标签。还可编写代码改变标签控件的显示文本以响应运行时的事件。例如,若应用程序需要用几分钟处理某个操作,则可用标签显示处理情况的信息。 4.1.1 常用属性 标签的属性很多,下面介绍几个常用的属性。 (1)Alignment属性 设置标签中文本的对齐方式。其使用语法如下: Object.Alignment[=值] 其中的“值”可以为0,1或2。0(默认值)表示左对齐;1表示右对齐;2表示居中。 (2)AutoSize属性 设置控件是否能够自动调整大小以显示所有的内容。其使用语法如下: Object.AutoSize[=True或False] (3)BackStyle属性 设置标签的背景样式。其使用语法如下: Object.BackStyle[=值] 其中的“值”可以为0或1。1(默认值)表示是不透明的;0表示是透明的。 (4)BorderStyle属性 设置标签的边框样式。其使用语法如下: Object.BorderStyle[=值] 其中的“值”可以为0或1。0(默认值)表示无边框;1表示单线边框。 (5)Caption属性 设置标签的文本内容。其使用语法如下: Object.Caption[=字符串] (6)WordWrap属性 设置标签的文本在显示时是否自动折行功能。其使用语法如下: Object.WordWrap[=True或False] 其中True表示具有自动折行功能;False(默认值)表示没有自动折行功能。 4.1.2 常用事件和方法 一般很少使用标签事件,标签的方法中常用的只有Move,其基本语法如下: Move left,top,width,height 其中left,top,width,height分别表示移动目的位置的坐标和大小。left为必要参数,其他三个为可选参数。 4.1.3 应用例子 目的:设计一个窗体说明标签的基本应用方法。 首先创建本章工程,在其中添加一个窗体,在该窗体中放置一个标签Label1。该标签的基本属性如下:

VB命令按钮常用属性

VB命令按钮常用属性 学习各种高级外挂制作技术,马上去百度搜索"魔鬼作坊",点击第一个站进入,快速成为做挂达人。 命令按钮通常用来在它的单击事件中完成一种特定的程序功能。尽管其他控件的单击事件也可以做同样的事情,但使用命令按钮已经成为Windows应用程序的风格。熟悉Windows的人都知道,单击命令按钮就会完成程序提供的一个功能。因此,向用户提供的服务功能通常都以命令按钮的形式出现在用户界面中。 常用属性 命令按钮的基本属性: Name、(:aption、Height、Width、Top、Left、Enabled、Visible、FontName、FontSize、FontBold、FontI—talic、FontUnderline等。 命令按钮特有属性:Default、Cancel、Style、Picture、DownPicture、DisabledPicture、MaskColor、IJseMaskColor和ToolTipText属性。 (1)Default属性 如果一个命令按钮的Default属性设置为Tme,则不论焦点在窗体的哪个控件上,只要用户按Enter键,就产生这个按钮的单击事件。在一个窗体中,只允许一个命令按钮的Default 属性被设置为True,当把一个命令按钮的Default属性设置为‘Frue,会自动将其他命令按钮的Default属性设为False。 (2)Cancel属性 如果一个命令按钮的Cancel属性设置为True,则不论焦点在窗体的哪个控件上,只要用户按Esc键,就产生这个按钮的单击事件。在一个窗体中,只允许一个命令按钮的Cancel 属性被设置为True,其他命令按钮的Cancel属性将自动设为False。本人首发中国自学编程网,通常在该按钮的Click事件中完成的是退出或取消之类的操作。 (3)Style属性 Style属性决定命令按钮中是否可以显示图形。如果设置为0,则不显示图形只显示标题;如果设置为1,则可同时显示文本和图形。 (4)Picture属性 该属性可以给命令按钮指定一个图形。只有Style属性的值设置为1时(图形方式),Picture属性才有效,否则Picture属性无效。 (5)DownPicture属性 该属性用来设置控件被单击并处于按下状态时,在控件中所显示图形,可用于复选框、单选按钮和命令按钮。只有当Style属性设置为1时,此属性才有效,否则无效。 如果没有设置DownPicture属性的值,则当按钮被按下时,将显示赋值给Picture属性的图形。

VB常用控件属性

VB常用控件属性 4.1 标签 标签是VB中最简单的控件,用于显示字符串,通常显示的是文字说明信息。但不能编辑标签控件。 使用标签的情况很多,通常用标签来标注本身不具有Caption属性的控件。例如,可用标签为文本框、列表框、组合框等控件来添加描述性的标签。还可编写代码改变标签控件的显示文本以响应运行时的事件。例如,若应用程序需要用几分钟处理某个操作,则可用标签显示处理情况的信息。 4.1.1 常用属性 标签的属性很多,下面介绍几个常用的属性。 (1)Alignment属性 设置标签中文本的对齐方式。其使用语法如下: Object.Alignment[=值] 其中的“值”可以为0,1或2。0(默认值)表示左对齐;1表示右对齐;2表示居中。 (2)AutoSize属性 设置控件是否能够自动调整大小以显示所有的内容。其使用语法如下: Object.AutoSize[=True或False] (3)BackStyle属性 设置标签的背景样式。其使用语法如下: Object.BackStyle[=值] 其中的“值”可以为0或1。1(默认值)表示是不透明的;0表示是透明的。 (4)BorderStyle属性 设置标签的边框样式。其使用语法如下: Object.BorderStyle[=值] 其中的“值”可以为0或1。0(默认值)表示无边框;1表示单线边框。 (5)Caption属性 设置标签的文本内容。其使用语法如下: Object.Caption[=字符串] (6)WordWrap属性 设置标签的文本在显示时是否自动折行功能。其使用语法如下: Object.WordWrap[=True或False] 其中True表示具有自动折行功能;False(默认值)表示没有自动折行功能。 4.1.2 常用事件和方法 一般很少使用标签事件,标签的方法中常用的只有Move,其基本语法如下: Move left,top,width,height 其中left,top,width,height分别表示移动目的位置的坐标和大小。left为必要参数,其他三个为可选参数。 4.1.3 应用例子 目的:设计一个窗体说明标签的基本应用方法。 首先创建本章工程,在其中添加一个窗体,在该窗体中放置一个标签Label1。该标签的基本属性如下: Name Label1 Caption "中华人民共和国" BorderStyle 1

表单设计的对象属性及常见例题

表单设计的对象属性及常见例题 1.表单(FORM) 属性 说明 默认值 Caption 表单标题栏上的文本 Form1 Closable 指定是否可以通过单击关闭按钮关闭表单 .T. MaxButton 表单是否有最大化按钮 .T. MinButton 表单是否有最小化按钮 .T. Picture 表单的背景图片(可到C:\考试素材中找) (无) 2. 标签(LABEL) (1) Caption Caption属性用于设置对象的标题文本。Caption仅接收字符型数据。注意标题文本中有时会有冒号,不能省略,例如“数A:”,不能只输入“数A”。 (2) FontName FontName属性用于设置标签标题文本的字体。如黑体、楷体、隶书等。 (3) FontSize FontSize属性用于设置标签标题文本的字号(字体大小)。 (4) WordWrap WordWrap属性值为逻辑值,用于设置当标签的AutoSize属性值为假(.F.)时,中文标题文本超宽时是否自动换行显示。WordWrap属性值为真(.T.)时自动换行,为假(.F.)时不换行。 3. 命令按钮(COMMAND) 在设置Caption属性时,可以将其中的某个字符作为访问键,方法是在该字符前插入一个反斜杠和一个小于号(\<)。例如将命令按钮的Caption属性值设置为“计算(\

VFP常用属性(表单)

计算机等级考试二级VFP常用属性列表 1.ActiveColumn 返回一个整数,表明表格控件中包含活动单元的列编号。应用于表格。 2.Activecontrol 引用对象上的活动控件。应用于容器,表单,页面,_SCREEN,工具栏。3.ActiveForm 引用表单集或_SCREEN对象中活动的表单对象。应用于表单,表单集,_SCREEN。4.ActivePage 返回页框对象中活动页面的页码。应用于页框。 5.Alignment 指定与控件相关的文本的对齐方式。应用于复选框,列,组合框,编辑框,标头,标签,选择按钮,微调,文本框。 6.AlloeAddNew 指定是否可以从一个表格中将新记录添加到表中。应用于表格。 7.AlwaysOnTop 避免其他窗口覆盖表单窗口。应用于表单,_SCREEN。 8.AutoActivate * 指定如何激活OLE容器控件。应用于OLE绑定型控件,OLE容器控件。 9.AutoCenter 指定表单对象第一次显示于Visual FoxPro主窗口时,是否自动居中放置。应用于表单,_SCREEN。 10.*AutoCloseTables 指定由数据环境指定的表或视图是否在表单集、表单或报表释放时关闭。应用于数据环境。11.AutoSize 指定控件是否依据其内容自动调节大小。应用于复选框,命令按钮,命令组,标签,OLE 绑定型控件,OLE容器控件,选项按钮,选项组。 12.BackColor 指定用于显示对象中文本和图形的背景色或前景色。应用于复选框,列,组合框,命令组,容器对象,控件对象,编辑框,表单,表格,标头,标签,选项按钮,选项组,页面,屏幕,形状,微调,文本框,工具栏。 13.ForeColor 同BackColor。应用于复选框,命令按钮,列,组合框,容器对象,控件对象,编辑框,表单,表格,标头,标签,选项按钮,页面,屏幕,微调,文本框,工具栏。14.BorderColor 指定对象的边框颜色。应用于组合框,命令组,容器对象,控件对象,图象,线条,列表框,选项组,页框,形状,文本框。 15.BorderStyle 指定对象的边框样式。应用于命令组,编辑框,表单,图象,标签,线条,选项组,_SCREEN,形状,文本框。 16.BorderWidth 指定一个控件的边框宽度。应用于容器对象,控件对象,线条,页框,形状。 17.Bound

vfp按钮命令

一、在表单窗口单击右键,选择“代码”,在“过程”下拉列表框中选择“Init”,在下部代码窗口输入以下代码: Public 首记录,末记录 GO BOTTOM 末记录= recno() GO TOP 首记录= recno() Thisform.第一条.enabled = .F. Thisform.上一条.enabled = .F. 二、在表单中加入四个命令按钮控件,把它们的Caption属性依次改为“第一条”、“上一条”、“下一条”、“最后一条”,Name属性也依次改为“第一条”、“上一条”、“下一条”、“最后一条”,并分别为它们输入Click过程代码。【第一条】click事件代码 IF recno() = 末记录 Thisform.下一条.enabled=.t. &&使【下一条】按钮可用 Thisform.最后一条.enabled=.t. &&使【最后一条】按钮可用 ENDIF GO TOP Thisform.第一条.enabled=.f. &&使【第一条】按钮不可用 Thisform.上一条.enabled=.f. &&使【上一条】按钮不可用 Thisform.refresh 【上一条】click事件代码 IF recno() = 末记录 Thisform.下一条.enabled=.t. &&使【下一条】按钮可用 Thisform.最后一条.enabled=.t. &&使【最后一条】按钮可用 ENDIF SKIP -1 IF recno() = 首记录 Thisform.第一条.enabled=.f. &&使【第一条】按钮不可用 Thisform.上一条.enabled=.f. &&使【上一条】按钮不可用 thisform.refresh messagebox("已经是第一条纪录!",0,"纪录情况") ENDIF thisform.refresh 【下一条】click事件代码 IF recno() = 首记录

VB命令按钮常用属性

VB命令按钮常用属性 命令按钮通常用来在它的单击事件中完成一种特定的程序功能。尽管其他控件的单击事件也可以做同样的事情,但使用命令按钮已经成为Windows应用程序的风格。熟悉Windows 的人都知道,单击命令按钮就会完成程序提供的一个功能。因此,向用户提供的服务功能通常都以命令按钮的形式出现在用户界面中。 常用属性 命令按钮的基本属性: Name、(:aption、Height、Width、Top、Left、Enabled、Visible、FontName、FontSize、FontBold、FontI—talic、FontUnderline等。 命令按钮特有属性:Default、Cancel、Style、Picture、DownPicture、DisabledPicture、MaskColor、IJseMaskColor和ToolTipText属性。 (1)Default属性 如果一个命令按钮的Default属性设置为Tme,则不论焦点在窗体的哪个控件上,只要用户按Enter键,就产生这个按钮的单击事件。在一个窗体中,只允许一个命令按钮的Default 属性被设置为True,当把一个命令按钮的Default属性设置为‘Frue,会自动将其他命令按钮的Default属性设为False。 (2)Cancel属性 如果一个命令按钮的Cancel属性设置为True,则不论焦点在窗体的哪个控件上,只要用户按Esc键,就产生这个按钮的单击事件。在一个窗体中,只允许一个命令按钮的Cancel 属性被设置为True,其他命令按钮的Cancel属性将自动设为False。本人首发中国自学编程网,通常在该按钮的Click事件中完成的是退出或取消之类的操作。 (3)Style属性 Style属性决定命令按钮中是否可以显示图形。如果设置为0,则不显示图形只显示标题;如果设置为1,则可同时显示文本和图形。 (4)Picture属性 该属性可以给命令按钮指定一个图形。只有Style属性的值设置为1时(图形方式),Picture 属性才有效,否则Picture属性无效。 (5)DownPicture属性 该属性用来设置控件被单击并处于按下状态时,在控件中所显示图形,可用于复选框、单选按钮和命令按钮。只有当Style属性设置为1时,此属性才有效,否则无效。 如果没有设置DownPicture属性的值,则当按钮被按下时,将显示赋值给Picture属性的图形。 (6)DisabledPicture属性 该属性用来设置对一个图形的引用,当命令按钮禁止使用(即Enabled属性被设置False)时,在按钮中显示图形。只有当Style属性设置为1时,此属性才有效,否则无效。 (7)MaskColor。和UseMaskColor属性 如果要使命令按钮中图像的某些颜色是透明的,则要把MaskColor属性设置为希望透明的颜色,然后把UseMaskColor属性设置为’rrue。当UseMaskColor属性为False时,MaskCloor 属性指定的屏蔽色不起作用。 在设计阶段可以使用Picture、DownPicture、DisabledPicture属性,也可以通过doadPicture()函数装入图形文件。 (8)ToolTipText属性 该属性是工具提示功能,运行时,当光标在对象上停留约1秒时,该字符串将显示在对象下面的小矩形框中。如果用图形作为对象的标签,使用此属性可以减少解释对象的文字。

相关主题