去掉main函数里的system("cls")后,就能通过鼠标操作,加上后就不好用了。
句柄具体怎么用没学明白,总是用着用着就出错,请不吝赐教。
#include<stdio.h>
#include<stdlib.h>
#include <Windows.h>
#include <conio.h>
//MouseRead用于判断鼠标动作,位置若在边界内返回1
//MouseRead(鼠标位置信息,x坐标左边界,x坐标右边界,y坐标上边界,y坐标下边界)
int MousePosJug(COORD pos,int x1,int x2,int y1,int y2){
if(pos.X >= x1&&pos.X <= x2&&pos.Y >= y1&&pos.Y <= y2){
return 1;
}
return 0;
}
//MousePosSet可设置光标位置到指定坐标,以便输出文字
//MousePosSet(光标横坐标,光标纵坐标)
void MousePosSet(int x,int y)
{
COORD pos;
pos.X=x; //横坐标
pos.Y=y; //纵坐标
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
}
//MouseRead用于记录鼠标左键单击的位置
COORD MouseRead(){
//定义句柄变量
HANDLE hOut = NULL;
HANDLE hIn = NULL;
//定义输入事件结构体
INPUT_RECORD mouseRecord;
//用于存储读取记录
DWORD res;
// 存储鼠标当前位置
COORD pos;
//获取标准输出句柄
hOut = GetStdHandle(STD_OUTPUT_HANDLE);
//获取标准输入句柄
hIn = GetStdHandle(STD_INPUT_HANDLE);
while(1){
//读取输入事件
ReadConsoleInput(hIn, &mouseRecord, 1, &res);
//判断是否为左键单击事件
if (mouseRecord.Event.MouseEvent.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED){
//获取鼠标当前位置
pos = mouseRecord.Event.MouseEvent.dwMousePosition;
return pos;
}
}
}
int main(){
system("cls"); // ????删掉这行就好用????
MousePosSet(5,5);
printf("test");
COORD pos;
while(1){
pos = MouseRead();
if(MousePosJug(pos,5,10,5,6)) printf("TEST");
}
}