Xman
驱动大牛
驱动大牛
  • 注册日期2001-08-24
  • 最后登录2011-10-07
  • 粉丝0
  • 关注0
  • 积分343分
  • 威望127点
  • 贡献值0点
  • 好评度34点
  • 原创分0分
  • 专家分0分
阅读:2156回复:9

如何实现鼠标定位?

楼主#
更多 发布于:2004-11-12 10:22

我按下一个按钮后,弹出一个模式对话框,
里面有几个按钮,我想让鼠标固定在某个按钮上,如何编程实现?
[img]http://www.driverdevelop.com/forum/upload/Xman/2004-04-05_2004324183110706.jpg[/img]
snowStart
驱动老牛
驱动老牛
  • 注册日期2004-04-06
  • 最后登录2011-06-02
  • 粉丝0
  • 关注0
  • 积分95分
  • 威望19点
  • 贡献值177点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-11-12 12:53

我按下一个按钮后,弹出一个模式对话框,
里面有几个按钮,我想让鼠标固定在某个按钮上,如何编程实现?

是把鼠标锁定在某个按钮上,不能移走那样吗?
还是鼠标可以随意移动呢?
学习,关注,交流中... [email=fengyu@163.com]Email:snowstarth@163.com[/email] [url]http://bbs.zndev.com/?a=snowStart[/url]
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
板凳#
发布于:2004-11-12 16:32
创建一个线程,然后将某个按钮位置传给他,在线程中不断的SetCursorPos该位置即可.
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
snowStart
驱动老牛
驱动老牛
  • 注册日期2004-04-06
  • 最后登录2011-06-02
  • 粉丝0
  • 关注0
  • 积分95分
  • 威望19点
  • 贡献值177点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-11-12 16:56
在鼠标移动消息WM_MOUSEMOVE里,重置鼠标位置,
使其保持在按钮范围内
学习,关注,交流中... [email=fengyu@163.com]Email:snowstarth@163.com[/email] [url]http://bbs.zndev.com/?a=snowStart[/url]
zhenlongyang
驱动小牛
驱动小牛
  • 注册日期2004-10-28
  • 最后登录2010-07-26
  • 粉丝1
  • 关注0
  • 积分729分
  • 威望100点
  • 贡献值0点
  • 好评度66点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-11-12 21:55
Windows没有设置鼠标移动范围的API么?
maqian
驱动中牛
驱动中牛
  • 注册日期2002-08-07
  • 最后登录2014-09-16
  • 粉丝2
  • 关注1
  • 积分12分
  • 威望120点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-11-17 10:21
ClipCursor
OK
五花马,千金裘,呼儿将出换美酒。 我不喝酒,喝可乐。
xx_focus
驱动中牛
驱动中牛
  • 注册日期2003-08-06
  • 最后登录2007-06-08
  • 粉丝0
  • 关注0
  • 积分96分
  • 威望10点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-11-17 13:22
启动窗体时在初始化过程中获取按钮位置

CRect rect;
//获得按钮窗体句柄
CWnd *pbuttonWnd = GetDlgItem(ID_BUTTON);
//获得按钮在窗体中的位置
pbuttonWnd->GetWindowRect( &rect);
int x = rect.top + rect.GetWidth() / 2;
int y = rect.left + rect.GetHeight() / 2;
然后使用 SetCursorPos(x, y);定位光标

试试看 :cool:
xx_focus
驱动中牛
驱动中牛
  • 注册日期2003-08-06
  • 最后登录2007-06-08
  • 粉丝0
  • 关注0
  • 积分96分
  • 威望10点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-11-17 13:24
如果一直固定就用 ClipCusor( &rect );
建议不要使用

[编辑 -  11/17/04 by  xx_focus]
maqian
驱动中牛
驱动中牛
  • 注册日期2002-08-07
  • 最后登录2014-09-16
  • 粉丝2
  • 关注1
  • 积分12分
  • 威望120点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-11-17 13:50
如果一直固定就用 ClipCusor( &rect );
建议使用.
在Windows下,操作系统会在一开始时调用ClipCusor,这就是单显时,光标移不出桌面的原因。
五花马,千金裘,呼儿将出换美酒。 我不喝酒,喝可乐。
xx_focus
驱动中牛
驱动中牛
  • 注册日期2003-08-06
  • 最后登录2007-06-08
  • 粉丝0
  • 关注0
  • 积分96分
  • 威望10点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-11-19 16:33
看来还没有解决
这两个函数接收的都是相对于整个屏幕的坐标,所以必须先获得主窗口的位置,然后再获取子窗口(如按钮)位子
再用 ClipCursor( &rect ) 限制光标。
在按钮消息事件过程的末尾再使用此函数释放限制区域
ClipCursor( NULL );
游客

返回顶部