Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何知道用户按下的键?_C_Winapi - Fatal编程技术网

C 如何知道用户按下的键?

C 如何知道用户按下的键?,c,winapi,C,Winapi,我有一个C语言的控制台应用程序 我试图检测用户按下了哪个键: if (...) printf ("Shift + Right Arrow"); if (...) printf ("Right Arrow"); if (...) printf ("中"); // (Big5(CP950): 0xA4 0xA4) if (...) printf ("文"); // (Big5(CP950): 0xA4 0xE5) .... 如何检测用户按下了哪些键?是否要检查虚拟键

我有一个C语言的控制台应用程序

我试图检测用户按下了哪个键:

if (...)
    printf ("Shift + Right Arrow");
if (...)
    printf ("Right Arrow");
if (...)
    printf ("中"); // (Big5(CP950): 0xA4 0xA4)
if (...)
    printf ("文"); // (Big5(CP950): 0xA4 0xE5)
....

如何检测用户按下了哪些键?

是否要检查虚拟键 #包括 #包括 BOOL isPressShift(){ 返回(短)0x8000和GetKeyState(VK_移位); } BOOL isPressRightArrow(){ 返回(短)0x8000和GetKeyState(右); } 内部主(空){ //…做点什么 if(isPressShift()&&isPressRightArrow()) printf(“Shift+右箭头\n”); 如果(isPressRightArrow()) printf(“右箭头”); 返回0; }
我应该使用哪个函数?您是否有消息循环或正在编写控制台应用程序?是MFC还是正在使用win32 api或控制台?@Digital_Reality是C:-中的控制台应用程序)
#include <stdio.h>
#include <Windows.h>
#include <Winuser.h>

BOOL isPressShift(){
    return (SHORT)0x8000 & GetKeyState( VK_SHIFT );
}

BOOL isPressRightArrow(){
    return (SHORT)0x8000 & GetKeyState( VK_RIGHT );
}


int main(void){
//  ... do something
    if(isPressShift() && isPressRightArrow())
        printf("Shift + Right Arrow\n");
    if(isPressRightArrow())
        printf("Right Arrow\n");
    return 0;
}