编译器:DEV C++15.5
代码描述:实时监测鼠标位置,假如鼠标右键,跳出循环
问题描述:跳出循环后控制台立即粘贴粘贴板内容,在存在输入函数的情况下,输入函数会读取粘贴的内容
#include<stdio.h>
#include<windows.h>
#include<stdbool.h>
#define lengths 100
#define wides 25
typedef struct p{
int x;
int y;
bool argu;
}POS;
void Mouse(POS *pos);
int main(void)
{
SetConsoleTitle("媒体库管理系统");
POS *pos=(POS*)malloc(sizeof(POS));
char ch[1000];
while(true)
{
Mouse(pos);
if(pos->argu)
break;
}
COORD po={2,2};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),po);
printf("输入:");
gets(ch);
puts(ch);
}
void Mouse(POS *pos)
{
pos->argu =false;
POINT *mouse=(POINT*)malloc(sizeof(POINT)+64);
GetCursorPos(mouse);
LPRECT console=(LPRECT)malloc(sizeof(LPRECT)+64);
HWND hwnd=FindWindow(NULL,"媒体库管理系统");
GetWindowRect(hwnd,console);
/*测试位置*/
int x=mouse->x -console->left;
int y=mouse->y -console->top;
COORD p={0,wides+2};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),p);
printf("鼠标相对控制台:%d %d \n",x,y);
printf("鼠标位置在控制台以实用数值(一个字符占八个单位长度)表示(近似):%d %d ",x/8,y/8);//更精确的在指定位置输出
/*结束*/
if(GetAsyncKeyState(VK_RBUTTON))
{
pos->x=mouse->x -console->left;
pos->y=mouse->y -console->top;
pos->argu =true;
}
}