怎么用C++写出鼠标点击效果

 我来答
本体是桃子b4
2011-12-11 · TA获得超过1286个赞
知道小有建树答主
回答量:2422
采纳率:0%
帮助的人:979万
展开全部
Windows是消息机制的,如果你需要两个鼠标能独立响应,必须要使得两个鼠标的移动、点击等事件独立起来, 但是windows系统没有提供两个鼠标的支持,那么如果你非要用两个鼠标独立起来,有两个办法:
1.你改写操作系统:但这个办法对于不开源的windos几乎是不可能的;或者你改写开源的Linux系统,如果你有那个本事的话——也就是说,这种办法对于windows不可能,linux的话,一些牛人是可以的;
2.你自己写驱动:鼠标也是有驱动的,只不过在windows中是集成在操作系统中的,但你可以再写一个驱动让系统响应双鼠标或者多个鼠标,就像windows系统本身的游戏手柄驱动可以支持多个游戏手柄一样——似乎写驱动也是牛人干的事额......

当你改好系统或者你写好驱动之后,两个鼠标的点击移动等事件就会发出不同的消息系统才能区分两个鼠标,如果是你自己写的windows程序的话,在回调函数里的switch语句里就可以单独处理两个消息了。
追问
为什么是两个鼠标?我只要一个鼠标的!
zhangwen3790
2011-12-12 · TA获得超过224个赞
知道小有建树答主
回答量:209
采纳率:100%
帮助的人:176万
展开全部
SetCursor()试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tattackor
推荐于2017-09-16 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:887万
展开全部
Windows是消息机制的,如果需要两个鼠标能独立响应,必须要使得两个鼠标的移动、点击等事件独立起来, 但是windows系统没有提供两个鼠标的支持,那么如果非要用两个鼠标独立起来,有两个办法:
1、改写操作系统:但这个办法对于不开源的windos几乎是不可能的;或者改写开源的Linux系统,也就是说,这种办法对于windows不可能,linux的话,一些牛人是可以的;
2、自己写驱动:鼠标也是有驱动的,只不过在windows中是集成在操作系统中的,但可以再写一个驱动让系统响应双鼠标或者多个鼠标,就像windows系统本身的游戏手柄驱动可以支持多个游戏手柄一样。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
七月流光1
推荐于2017-10-07 · TA获得超过528个赞
知道小有建树答主
回答量:339
采纳率:100%
帮助的人:190万
展开全部
#include <windows.h>
#include <stdio.h>

LRESULT CALLBACK WinProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
POINT pt={0,0};

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd )
{
HWND hwnd;
MSG msg;
BOOL bRet;
WNDCLASS wndcls;
wndcls.style=CS_HREDRAW|CS_VREDRAW;
wndcls.lpfnWndProc=WinProc;
wndcls.cbClsExtra=0;
wndcls.cbWndExtra=0;
wndcls.lpszClassName=TEXT("wjbxngx");
wndcls.lpszMenuName=NULL;
wndcls.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wndcls.hIcon=LoadIcon(NULL,IDI_ERROR);
wndcls.hCursor=LoadCursor(NULL,IDC_CROSS);
wndcls.hInstance=hInstance;
RegisterClass(&wndcls);
hwnd=CreateWindow(TEXT("wjbxngx"),TEXT("示例"),WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,600,400,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd);
while ((bRet=GetMessage(&msg,hwnd,0,0))!=0)
{
if (bRet==-1)
{
return -1;
}
else
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return msg.wParam;
}

LRESULT CALLBACK WinProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
HDC hdc;
TCHAR szChar[20];
PAINTSTRUCT ps;
switch(uMsg)
{
case WM_LBUTTONDOWN:
pt.x=LOWORD(lParam);
pt.y=HIWORD(lParam);
break;
case WM_RBUTTONDOWN:
InvalidateRect(hwnd,NULL,TRUE);
break;
case WM_MOUSEMOVE:
if (wParam&MK_LBUTTON)
{
hdc=GetDC(hwnd);
MoveToEx(hdc,pt.x,pt.y,NULL);
LineTo(hdc,LOWORD(lParam),HIWORD(lParam));
pt.x=LOWORD(lParam);
pt.y=HIWORD(lParam);
ReleaseDC(hwnd,hdc);
}
break;
case WM_PAINT:
hdc=BeginPaint(hwnd,&ps);
EndPaint(hwnd,&ps);
break;
case WM_CLOSE:
if (IDYES==MessageBox(hwnd,TEXT("真的要退出吗?"),TEXT("信息"),MB_YESNO))
{
DestroyWindow(hwnd);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
return 0;
}
追问
可是,运行后有两个错误哦!
追答
点击工程-设置-连接,在工程选项里找到"/subsystem:console",将其改为"/subsystem:windows"
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hyqhyq_3
2011-12-12 · TA获得超过143个赞
知道小有建树答主
回答量:176
采纳率:0%
帮助的人:146万
展开全部
要么用winapi,要么用mfc,找书去吧……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式