#include<windows.h>
HANDLE hin=GetStdHandle(STD_INPUT_HANDLE),hout=GetStdHandle(STD_OUTPUT_HANDLE);
INPUT_RECORD Buf;
//隐藏光标
void HideCursor(){
CONSOLE_CURSOR_INFO CursorInfo;
GetConsoleCursorInfo(hout,&CursorInfo);
CursorInfo.bVisible = 0;
SetConsoleCursorInfo(hout,&CursorInfo);
}
int main(){
HideCursor();
while(1){
ReadConsoleInput(hin,&Buf,64,NULL);
std::printf("x:%d y:%d",Buf.Event.MouseEvent.dwMousePosition.X,Buf.Event.MouseEvent.dwMousePosition.Y);
Sleep(1000);
}
}
Segmentation fault
我的电脑是64位系统
代码修改如下:
#include <windows.h>
#include <stdio.h>
HANDLE hin=GetStdHandle(STD_INPUT_HANDLE),hout=GetStdHandle(STD_OUTPUT_HANDLE);
INPUT_RECORD Buf;
//隐藏光标
void HideCursor(){
CONSOLE_CURSOR_INFO CursorInfo;
GetConsoleCursorInfo(hout,&CursorInfo);
CursorInfo.bVisible = 0;
SetConsoleCursorInfo(hout,&CursorInfo);
}
int main(){
HideCursor();
//用于存储读取记录
DWORD res;
COORD pos;
while(1){
ReadConsoleInput(hin,&Buf,1,&res); //这里最后两个参数用1和res变量
pos = Buf.Event.MouseEvent.dwMousePosition; //这里用pos变量暂存坐标
printf("x:%d y:%d",pos.X,pos.Y);
Sleep(1000);
}
}
判断一下hin是不是为空