Krissi

Short description of the space

TC 中的 bioskey() 函数在 VC 中用什么代替?

bioskey() 函数需要引用头文件 bios.h,这个头文件在 VC 中默认是没有的,将其引用 #include <bios.h> 删掉即可。

功能上,bioskey 可以实现以下三个功能:

1. bioskey(0): 返回用户按键。

如果返回值的低 8 位非 0,该值表示按键的 ASCII 码;

如果返回值的低 8 位为 0,该值表示按键的键码。

作为替代,VC 中可以使用 getch() 返回用户按键。对于功能键(如光标键),getch() 需要调用两次,第一次返回 0 或 0xE0,第二次返回键码。

详见:http://msdn.microsoft.com/en-us/library/078sfkak(v=VS.80).aspx

2. bioskey(1): 返回是否有按键发生。

如果没有按键,返回 0;

如果有按键,返回该按键值。(该按键仍然保留)

作为替代,VC 中可以使用 kbhit() 返回是否有按键发生。

详见:http://msdn.microsoft.com/en-us/library/58w7c94c(VS.80).aspx

3. bioskey(2): 返回当前控制键的状态。

返回值共 16 位,分别表示:

  • 0 右 Shift 按下
  • 1 左 Shift 按下
  • 2 Ctrl 按下
  • 3 Alt 按下
  • 4 Scroll Lock 打开
  • 5 Num Lock 打开
  • 6 Caps Lock 打开
  • 7 Insert 打开
  • 8 左 Ctrl 按下
  • 9 左 Alt 按下
  • 10 右 Ctrl 按下
  • 11 右 Alt 按下
  • 12 Scroll Lock 按下
  • 13 Num Lock 按下
  • 14 Caps Lock 按下
  • 15 Sys Req 按下

作为替代,VC 中可以使用 GetKeyState 或 GetAsyncKeyState。

详见:http://msdn.microsoft.com/en-us/library/ms646301(v=vs.85).aspx

分享到