热情软件屋

 

如何让鼠标只停留在一定间距的网格点上


编号: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;

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio