通过键盘扫描码检测键的状态。
语法
用法
result = MultiKey(scancode )
参数
返回值
说明
MultiKey是一种功能,可以随时检测由scancode确定的任何键的状态。如果按下该键,它将返回
-1,否则返回
0.使用
MultiKey时,键盘输入缓冲区不会被禁用;也就是说,按下的键将被存储,随后你的下一次调用返回
Inkey.这意味着在完成使用
MultiKey后,您必须手动清空
Inkey,使用以下方法:
While Inkey <> "": Wend '' loop until the Inkey buffer is empty
使用
MultiKey保持
Inkey工作可以更灵活地检测
Chr(255)+"k"组合,如果窗口化图形模式已通过
Screen语句设置,则可以对窗口关闭按钮单击返回的
Chr(255)+"k"组合进行检测。有关接受的扫描码列表,请参阅
DOS键盘扫描码;这些保证对所有FreeBASIC支持的平台都有效。
只要屏幕为
解锁,
MultiKey应始终在图形模式下工作。控制台中的支持取决于程序运行的平台,但不能保证。
例子
#include "fbgfx.bi"
#if __FB_LANG__ = "fb"
Using FB ''扫描代码常量存储在lang FB的FB命名空间中
#endif
Dim As Integer x, y
ScreenRes 640, 480
Color 2, 15
x = 320: y = 240
Do
'检查箭头键并相应更新(x,y)位置
If MultiKey(SC_LEFT ) And x > 0 Then x = x - 1
If MultiKey(SC_RIGHT) And x < 639 Then x = x + 1
If MultiKey(SC_UP ) And y > 0 Then y = y - 1
If MultiKey(SC_DOWN ) And y < 479 Then y = y + 1
'在我们工作时锁定页面
ScreenLock
'清除屏幕并在位置(x,y)处绘制一个圆圈
Cls
Circle(x, y), 30, , , , ,F
ScreenUnlock
Sleep 15, 1
'运行循环,直到用户按Escape
Loop Until MultiKey(SC_ESCAPE)
'清除这些缓冲
While Inkey <> "": Wend
Print "按CTRL和H退出..."
Do
Sleep 25
''保持循环,直到用户同时按住CTRL和H
If MultiKey(SC_CONTROL) And MultiKey(SC_H) Then Exit Do
Loop
方言差异
与QB差别
参考