🏝1.获得句柄
GetStdHandle是⼀个Windows API函数。它用于从⼀个特定的标准设备(标准输入、标准输出或标 准错误)中取得⼀个句柄(用来标识不同设备的数值),使用这个句柄可以操作设备。
⛳️函数原型:
HANDLE GetStdHandle(DWORD nStdHandle);
#include<stdlib.h>
#include<windows.h>
int main()
{HANDLE houtput = NULL;houtput=GetStdHandle(STD_OUTPUT_HANDLE);
}
🏝2.判断键盘按键是否被按
⛳️GetAsyncKeyState函数
函数原型:
SHORT GetAsyncKeyState(it vKey)
vKey代表虚拟键位,每一个键位有一个虚拟键码,如果short类型16位的最高位是1,表示该键位是按下的,如果最高位是0,表示该键位是抬起的。
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
int main()
{short ret = (GetAsyncKeyState(0x35));while (1){if ((ret & 1) == 1)printf("5被按下\n");elseprintf("5没有被按下\n");}return 0;
}
在比特鹏哥的电脑环境中,上面代码没有按5时,不打印,按下5以后,死循环打印5被按下。
⛳️然后我就在最前面加上Sleep(3000)。当运行程序以后在三秒内按下5时,打印5被按下。如果三秒内没有按5,则打印5没有被按下。
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<stdbool.h>
int main()
{Sleep(2000);short ret = (GetAsyncKeyState(0x35));if ((ret & 1) == 1)printf("5被按下\n");elseprintf("5没有被按下\n");return 0;
}
🏝3.控制台屏幕上的坐标COORD
COORD 是Windows API中定义的⼀个结构体,表示⼀个字符在控制台屏幕幕缓冲区上的坐标,坐标系 (0,0) 的原点位于缓冲区的顶部左侧单元格。
⛳️类型声明:
typedef struct _COORD
{
SHORT X;
SHORT Y;
} COORD, *PCOORD;
🏝4.改变运行窗口的光标位置
⛳️SetConsoleCursorPosition函数
函数原型:
BOOL WINAPI SetConsoleCursorPosition( HANDLE hConsoleOutput, COORD pos );
#include<stdlib.h>
#include<windows.h>
int main()
{COORD cursor = { 10,20 };HANDLE houtput = GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleCursorPosition(houtput, cursor);getchar();
}