如何让鼠标只停留在一定间距的网格点上
编号:QA001294
建立日期: 1999年7月6日 最后修改日期:1999年7月6日
所属类别:
LHF:
Visual C++ 5.0
Windows 98
如何在CView派生的View中让鼠标只停留在一定间距的网格点上?如同大多数的图形软件,如 3D Studio中。
回答:
你可以在OnMouseMove中判断鼠标光标的当前的位置。然后利用SetCursorPos移动鼠标的位置。需要注意的是OnMouseMove的坐标是基于客户区的,而SetCursorPos的坐标是基于屏幕的。下面是一个简单的例子,它将纵坐标限制为5的倍数:
static CPoint p3;
CPoint p2 = point;
ClientToScreen(&p2);
if(p3.y != 0 && p2.y % 5 != 0)
{
if(p2.y - p3.y > 0 )
SetCursorPos(p2.x, (int(p2.y/5) + 1) * 5);
else if(p2.y - p3.y < 0)
SetCursorPos(p2.x, (int(p2.y/5) -1) * 5);
}
p3 = p2;
此问题由李海回答。
| |
|
|
| |
|
|