阅读:2156回复:9
如何实现鼠标定位?我按下一个按钮后,弹出一个模式对话框, 里面有几个按钮,我想让鼠标固定在某个按钮上,如何编程实现? |
|
|
沙发#
发布于:2004-11-12 12:53
是把鼠标锁定在某个按钮上,不能移走那样吗? 还是鼠标可以随意移动呢? |
|
|
板凳#
发布于:2004-11-12 16:32
创建一个线程,然后将某个按钮位置传给他,在线程中不断的SetCursorPos该位置即可.
|
|
|
地板#
发布于:2004-11-12 16:56
在鼠标移动消息WM_MOUSEMOVE里,重置鼠标位置,
使其保持在按钮范围内 |
|
|
地下室#
发布于:2004-11-12 21:55
Windows没有设置鼠标移动范围的API么?
|
|
5楼#
发布于:2004-11-17 10:21
ClipCursor
OK |
|
|
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: |
|
7楼#
发布于:2004-11-17 13:24
如果一直固定就用 ClipCusor( &rect );
建议不要使用 [编辑 - 11/17/04 by xx_focus] |
|
8楼#
发布于:2004-11-17 13:50
如果一直固定就用 ClipCusor( &rect );
建议使用. 在Windows下,操作系统会在一开始时调用ClipCusor,这就是单显时,光标移不出桌面的原因。 |
|
|
9楼#
发布于:2004-11-19 16:33
看来还没有解决
这两个函数接收的都是相对于整个屏幕的坐标,所以必须先获得主窗口的位置,然后再获取子窗口(如按钮)位子 再用 ClipCursor( &rect ) 限制光标。 在按钮消息事件过程的末尾再使用此函数释放限制区域 ClipCursor( NULL ); |
|