回 帖 发 新 帖 刷新版面

主题:写给初学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

回复列表 (共3个回复)

沙发

你现在怎么不上QQ了
我有个问题难住了,帮帮我啊!
我用鼠标做文本的选择,怎么也没有成功
我要求的这个函数过程如下
FUNUTION TxtSelect (x1,y1,x2,y2)
调用后为真,代表选择,X1,Y1返回开始选择的,X2,Y2返回结束选择的坐标

板凳

while Quit=0
   if MouseDownLeft then  '当鼠标在编辑区域按下左键时调用这个函数
      SelTxt$=TxtSelect(x1,y1,x2,y2)   '函数应该返回一个字符串,因为可能有粘贴的动作,并且返回位置(X1,y1,x2,y2)
   endif
wend

function TxtSelect$(x1%,y1%,x2%,y2%)

   x%=MouseX
   y%=MouseY   '取鼠标当前位置坐标

   While MouseUpLeft=False'当鼠标左键抬起时退出
       if MouseMove then
           '处理鼠标移动时的动作结果,即显示选择的区域
       endif   
   wend

   if X%=MouseX and y%=MouseY then exit function '鼠标还在最初位置则没有选择内容

   x1%=X%
   y1%=Y%
   x2%=MouseX
   y2%=MouseY

   TxtSelect$=(x1%,y1%)-(x2%,y2%)矩形内的内容

end function

3 楼

While MouseUpLeft=False'当鼠标左键抬起时退出
       if MouseMove then
           '处理鼠标移动时的动作结果,即显示选择的区域
       endif   
   wend

处理鼠标移动时的动作结果,即显示选择的区域
我就被难在这里,希望你写个完整的,别只是说说
我只要结果!
我不想自己写,再写下去我要掉头发了!

我来回复

您尚未登录,请登录后再回复。点此登录或注册