如何在c语言中编写用鼠标点击输入

 我来答
ok心心抱抱
2017-01-11 · TA获得超过110个赞
知道小有建树答主
回答量:1307
采纳率:0%
帮助的人:301万
展开全部
需要mouse.h这个库函数,你百度一下吧,在c的图形化编程中用到 不过用c而不是vc编写这个比较繁琐,呵呵
帐号已注销
2018-01-31 · TA获得超过222个赞
知道小有建树答主
回答量:100
采纳率:80%
帮助的人:19.6万
展开全部
//本函数ismouse的作用是检测鼠标,直到有单击后退出函数,单击的位置存在pt里
pt.X和pt.Y就是他的横竖坐标啦
#include<windows.h>
COORD pt;

int ismouse()
{
DWORD dwMode, dwOldMode; /* 原来的模式与新模式 */
DWORD dwRead; /* 已经读取的输入事件数 */
int mouse_pos; /* 用于返回鼠标位置 */
UINT count; /* 用于循环控制 */
INPUT_RECORD ir[128]; /* 控制台输入记录 */
CONSOLE_CURSOR_INFO cci, cciOld; /* 鼠标相关的设置 */
HANDLE hStdIn = GetStdHandle(STD_INPUT_HANDLE), hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); /* 标准输入输出句柄 */
if(!GetConsoleMode(hStdIn, &dwOldMode)) /* 取得控制台原来的模式 */
{
fprintf(stderr, "GetConsoleMode 错误:%d\n", GetLastError());
return -1;
}
dwMode = dwOldMode;
dwMode &= ~(ENABLE_QUICK_EDIT_MODE);
dwMode |= ENABLE_WINDOW_INPUT | ENABLE_MOUSE_INPUT;
if(!SetConsoleMode(hStdIn, dwMode)) /* 开启鼠标事件 */
{
fprintf(stderr, "SetConsoleMode 错误:%d\n", GetLastError());
return -1;
}
GetConsoleCursorInfo(hStdOut, &cciOld);
cci.bVisible = TRUE; /* 可见 */
cci.dwSize = 100; /* 块状 */
if(!SetConsoleCursorInfo(hStdOut, &cci))
{
fprintf(stderr, "SetConsoleCursorInfo 错误:%d\n", GetLastError());
return -1;
}
while(1) /* 循环等待用户事件 */
{
if(!ReadConsoleInput(hStdIn, &ir[0], 128, &dwRead))
{
fprintf(stderr, "ReadConsoleInput 错误:%d\n", GetLastError());
return -1;
}
for(count=0; count<dwRead; count++)
{
switch(ir[count].EventType)
{
case MOUSE_EVENT:
switch(ir[count].Event.MouseEvent.dwEventFlags)
{
case 0: /* 取得鼠标单击事件 */
if(ir[count].Event.MouseEvent.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED)
{
SetConsoleMode(hStdIn, dwOldMode); /* 还原原来的设置 */
SetConsoleCursorInfo(hStdOut, &cciOld);
mouse_pos = ir[count].Event.MouseEvent.dwMousePosition.X;
mouse_pos = mouse_pos << 16 | ir[count].Event.MouseEvent.dwMousePosition.Y;
return mouse_pos;
}
break;
case MOUSE_MOVED: /* 更新鼠标位置 */
pt.X = ir[count].Event.MouseEvent.dwMousePosition.X;
pt.Y = ir[count].Event.MouseEvent.dwMousePosition.Y;
SetConsoleCursorPosition(hStdOut, pt);
break;
}
break;
default:
break;
}
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式