主题:写给初学QB的(按键)
刚开始学QB时有许多难题,处理按键就是其中之一
下面是QB中的按键外理(个人的心得)
注意:以下所说的函数是以Quick Basic 7.1版本为准的
1.平常按键:
英文字母,数字,一般符号的可以在QB中用 INKEY$ 函数返回
如:nKey$=Inkey$
2.功能键:
F1~F12,光标键,编辑键
这些按键也能从 INKEY$ 函数返回
如何判断呢?很简单:
这些键其实是二个字节的,前面一个字节都是字符 CHR$(0)
第二个字节就是键值,下面列出这些键值:
(1)光标键:
KeyLeft% = 75, KeyRight% = 77, keyUp% = 80, KeyDown% = 72
(2)编辑键:
KeyPgUp% = 73, keyPgDn% = 81, KeyHome% = 71, KeyEnd% = 79
KeyIns% = 82, KeyDel% = 83
(3)功能键:
KeyF1% = 59, KeyF2% = 60, KeyF3% = 62, KeyF4% = 62, KeyF5% = 63
KeyF6% = 64, KeyF7% = 65, KeyF8% = 66, KeyF9% = 67, KeyF10% = 68
KeyF11% = 133, KeyF12% = 134
例子:
While Quit%=0
nKey$=INKEY$
if nKey$=chr$(27) then Quit%=1 '按ESC则退出
if nKey$=chr$(0)+chr$(75) then '如果按到光标左键则
'此处写处理按键的语句
endif
wend
3.控制键:
我们要如何知道Ctrl,Alt,左右Shift,Num Lock,Caps Lock,Scroll Lock,Insert 这几个键的状态呢?
其实这在内存中某个地址中就能轻松的获得
def seg=65
Shift%=peek(7)
Shift% 就是我们想要的值了,那么这个值有什么用?
我们得到的这个值是一个字节的整数,我们将它转化成一个二进制的值
那么它就是八个位,每个位就代表了上面所说的八个键的状态:
位0: 右Shift
1: 左Shift
2: Ctrl
3: Alt
4: Scroll Lock
5: Num Lock
6: Caps Lock
7: Insert
如果这些位的值为0,表示没被按下,如果为1则表示被按下
例子:
Def seg=65
while Quit%=0
if inkey$=chr$(27) then Quit%=1 '如果按ESC则退出
Shift%=Peek(7)
if Shift% and 1 then
'右Shift键被按下
else
'右Shift键没有被按下
endif
wend
下面是QB中的按键外理(个人的心得)
注意:以下所说的函数是以Quick Basic 7.1版本为准的
1.平常按键:
英文字母,数字,一般符号的可以在QB中用 INKEY$ 函数返回
如:nKey$=Inkey$
2.功能键:
F1~F12,光标键,编辑键
这些按键也能从 INKEY$ 函数返回
如何判断呢?很简单:
这些键其实是二个字节的,前面一个字节都是字符 CHR$(0)
第二个字节就是键值,下面列出这些键值:
(1)光标键:
KeyLeft% = 75, KeyRight% = 77, keyUp% = 80, KeyDown% = 72
(2)编辑键:
KeyPgUp% = 73, keyPgDn% = 81, KeyHome% = 71, KeyEnd% = 79
KeyIns% = 82, KeyDel% = 83
(3)功能键:
KeyF1% = 59, KeyF2% = 60, KeyF3% = 62, KeyF4% = 62, KeyF5% = 63
KeyF6% = 64, KeyF7% = 65, KeyF8% = 66, KeyF9% = 67, KeyF10% = 68
KeyF11% = 133, KeyF12% = 134
例子:
While Quit%=0
nKey$=INKEY$
if nKey$=chr$(27) then Quit%=1 '按ESC则退出
if nKey$=chr$(0)+chr$(75) then '如果按到光标左键则
'此处写处理按键的语句
endif
wend
3.控制键:
我们要如何知道Ctrl,Alt,左右Shift,Num Lock,Caps Lock,Scroll Lock,Insert 这几个键的状态呢?
其实这在内存中某个地址中就能轻松的获得
def seg=65
Shift%=peek(7)
Shift% 就是我们想要的值了,那么这个值有什么用?
我们得到的这个值是一个字节的整数,我们将它转化成一个二进制的值
那么它就是八个位,每个位就代表了上面所说的八个键的状态:
位0: 右Shift
1: 左Shift
2: Ctrl
3: Alt
4: Scroll Lock
5: Num Lock
6: Caps Lock
7: Insert
如果这些位的值为0,表示没被按下,如果为1则表示被按下
例子:
Def seg=65
while Quit%=0
if inkey$=chr$(27) then Quit%=1 '如果按ESC则退出
Shift%=Peek(7)
if Shift% and 1 then
'右Shift键被按下
else
'右Shift键没有被按下
endif
wend