回 帖 发 新 帖 刷新版面

主题:几个问题

关于CHR(*)的键盘控制语句:
    ESC的scan code是1,但为什么用CHR(0)+CHR(1)不能扫描到ESC键?必须用ASCII---CHR(27)才能得到。类似的比如enter也是只能用ASCII---CHR(28)。
  而左键右键的键盘扫描码却是CHR(0)+CHR(75)和CHR(0)+CHR(77),为什么这几个键又用的CHR(0)+CHR(*)的方式,这两种方式能等同吗?什么时候用什么怎么判断?希望能回答一下谢谢!
关于INKEY$(抱歉,已经问过三次了,实在太难...):
  上次我问的问题还是没搞明白,比如
     DO: K$=INKEY$:LOOP UNTIL K$<> ""
  这里K$=INKEY$是什么意思?为什么直接用 DO: LOOP UNTIL INKEY$<> ""就不行了?这个INKEY的问题实在太复杂啦,求求老鸟们多透露些信息吧,一年多来这个INKEY$的很多地方我都是蒙蒙笼笼的用的。


另外还有个问题,能不能把一个字符放大缩小?除了改变屏幕的分辩率以外,有没有其它办法?这个问题特别重要!

回复列表 (共3个回复)

沙发

1. 先说第二个问题,这个问题需要你去学学图形操作理论,或者向冷石多请教,老实说,我不懂

2. 粗浅说说第一个问题
   一般对按键的操作
   最基本的函数是input$(1)
   但只能接收若干个ASC码的键盘信息,对于字符以外的扩展按键无能为力

   
关于inkey$
在老贴应该也有不少详细的说明了
它应该说是在键盘缓冲区中读入一个键盘信息
如果是普通的一些有ASCII码的按键,直接获得其ASCII字符,
比如ESC,回车,换行,DEL等等按键

但一些扩展的按键比如说上下左右翻页,HOME,END等按键
就需要加多一个标志chr$(0)带头识别,后面跟按键的扫描码
这是扩展按键相对于ASCII字符码而言的

然后你说的为什么要用k$=inkey$
这是因为把按键信息赋到k$去,以便后面的程序检测键盘按了什么键,
单纯的inkey$是否为空只是判断有无按键

最简单的inkey$实验程序好多人都写了很多程序了,你试运行一下再多思考就会明白的了:

do
  do:k$=inkey$:loop until k$<>""
  print "你刚才按的按键是字符:";k$;"长度为:";len(k$);
  if asc(k$)<>0 then
     print "它的ASC码是:";asc(k$)
  else
     print "它的扩展扫描码是: chr$(0)+chr$(";asc(right$(k$,1));")"
  endif
loop until k$=chr$(27)

3. 郑重声明一点,我不是鸟人,也不是老鸟,我渴望做一头猪.

板凳

非常感谢,基本明白!!

3 楼

另外,冷石我不知道好久没看到他了。

我来回复

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