【发布时间】:2015-07-18 08:58:49
【问题描述】:
我正在编写一个响应键盘输入的 win32 应用程序,只是为了获得对编程过程的信心。为此,我使用了GetAsyncKeyState() 函数。
起初,我将所有代码都写在main() 函数中,一切似乎都很好,它确实有效。所以我决定让事情复杂化,但这需要我在main() 调用的另一个函数中使用GetAsyncKeyState() 函数。我以为我只需要在main() 之外声明一些变量并将代码从main 移动到新函数,如下所示:
int btnup_down = 0;
int close = 1;
int main(void){
while (1){
Sleep(50);
listentokb();
if (close == 0){
break;
}
}return 0;
}
int listentokb(void){
if ((GetAsyncKeyState(0x4C) & 0x8000) && (ko == 0)){
ko = 1;
printf("Ok you pressed k");
return 0;
} else if (((GetAsyncKeyState(0x4C) == 0) && (ko == 1)) {
ko = 0;
printf("Now you released it");
close = 0;
return 0;
}return 0;
}
当我运行此代码时,循环继续进行,无论我是否按下键,它都会继续循环,而不会打印任何内容。任何帮助将不胜感激。
【问题讨论】:
-
你当然不需要全局变量。此外,0x4C 是 L 键。
标签: c++ c winapi keyboard main