关于鼠标的问题,给100分,若能解决,再给100分 我现在在屏幕上画了一些点,例如001,002,003...... 我现在要按键盘的K键,使鼠标的指针从001按顺序跳到002,003(每按一下K键,跳动一次). 我不知道怎么做,各位大虾,有劳! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1 你画点的时候记住每个点的位置 把点的坐标转为CRect类型2 在PreTranslateMessage函数里处理PreTranslateMessage(MSG* pMsg){ if(pMsg->message==WM_KEYDOWN) { switch(pMsg->wParam) { case: 'K' ClipCursor(&rt);//rt是Rect类型,函数就是限制鼠标的范围 ......//循环改变rt的位置 laiyiling只是限制鼠标的位置,并不能给人一种某个点被选中的感觉要选中某个点,只能动态的在选中的点周边画一个矩形框,或者圆什么的选中下一个点的时候,在四周画框同时还要把上一个点的四周的框给擦掉这只要记住原来的框的位置坐标,和那个点的坐标重绘那块区域,不画框,只画点就可以了 可以在laiyiling的代码中加一函数CDp(CPoint point) 好像是mouseEvent这类的函数,效果如同鼠标事件 如果要模拟鼠标点击用mouse_eventmouse_event最好配合SetCursorPos(x,y)函数一起使用,mouse_event有五个参数,第一个为选项标志,为MOUSEEVENTF_LEFTDOWN时表示左键按下为MOUSEEVENTF_LEFTUP表示左键松开,向系统发送相应消息。第二三个参数分别表示x,y 相对位置,一般可设为0,0,第四五个参数并不重要,一般也可设为0,0。要得到mouse_event函数的更详细的用法,可以查阅msdn。 下面是关于mouse_event的示例代码: POINT lpPoint; GetCursorPos(&lpPoint); SetCursorPos(lpPoint.x, lpPoint.y); mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0); mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0); 注意,模拟鼠标事件,要注意还原,即按完键要松开,一个down对应一个up;不然可能影响程序的功能。 laiyiling说得很好,k键消息就是这样处理的,如果定位鼠标的要求不能满足,,可以根据需要,修改一下! 每个点的坐标你在绘制时应该是已知的,保存在如下数组中CPoint pts[MAXPOINTS]; //保存的是Client坐标处理WM_KEYDOWN 消息CPoint pt;if(wParam == 'K' || wParam == 'k'){ pt = pts[nCurrPointIndex++]; ClientToScreen(&pt); SetCursorPos(pt.x,pt.y); if(nCurrPointIndex>=MAXPOINTS) nCurrPointIndex = 0;} 把royer的代码改一下,CPoint pts[MAXPOINTS]; //保存的是Client坐标int nCurrPointIndex = 0; //当前点的序号处理WM_KEYDOWN 消息CPoint pt;if(wParam == 'K' || wParam == 'k'){ nCurrPointIndex++; if(nCurrPointIndex >= MAXPOINTS) nCurrPointIndex = 0; pt = pts[nCurrPointIndex]; ClientToScreen(&pt); SetCursorPos(pt.x,pt.y);} 我现在用的IDE是BC5.02,编程用的是C(SDK),平台是win2k,我现在程序是在屏幕上画点(已完成),并且记下了每一点的做标x,y值,问题是:我把鼠标的箭头放在一个点上,然后按下键盘上的 K 键,这时鼠标的箭头要马上跳到下一点上。再按一下 K 键,鼠标的箭头跳到下一个点上,该怎么做?难点:鼠标控制是win2k所控制,我用的SDK,我怎么能让鼠标的箭头让我来控制。最好给我一个例子。 Bitmap和Brush!哪位大哥给我解释一下?谢谢! 变量声明 通过菜单隐藏对话框中的状态栏 CStdioFile文件保存 带TabControl控件的对话框的调用遇到问题 招聘VC++程序员 设置listctrl控件风格中选择了LVSCW_AUTOSIZE,如何去掉report型listctrl每行字的下划线??? 在多线程中如何调用MFC中类的一个函数? 如何知道当前帐户属于哪个组?急! 谁能告诉我用VC爽还是BC爽 谁自已写过EDIT。不用windows的EDIT控件,做一个Auto CAD命令行类似的东西 怎样判断当前是否与数据库正确连接
把点的坐标转为CRect类型
2 在PreTranslateMessage函数里处理
PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message==WM_KEYDOWN)
{
switch(pMsg->wParam)
{
case: 'K'
ClipCursor(&rt);//rt是Rect类型,函数就是限制鼠标的范围
......//循环改变rt的位置
要选中某个点,只能动态的在选中的点周边画一个矩形框,或者圆什么的
选中下一个点的时候,在四周画框
同时还要把上一个点的四周的框给擦掉
这只要记住原来的框的位置坐标,和那个点的坐标
重绘那块区域,不画框,只画点就可以了
mouse_event最好配合SetCursorPos(x,y)函数一起使用,mouse_event有五个参数,第一个为选项标志,为MOUSEEVENTF_LEFTDOWN时表示左键按下为MOUSEEVENTF_LEFTUP表示左键松开,向系统发送相应消息。第二三个参数分别表示x,y 相对位置,一般可设为0,0,第四五个参数并不重要,一般也可设为0,0。要得到mouse_event函数的更详细的用法,可以查阅msdn。
下面是关于mouse_event的示例代码:
POINT lpPoint;
GetCursorPos(&lpPoint);
SetCursorPos(lpPoint.x, lpPoint.y);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
注意,模拟鼠标事件,要注意还原,即按完键要松开,一个down对应一个up;不然可能影响程序的功能。
CPoint pts[MAXPOINTS]; //保存的是Client坐标处理WM_KEYDOWN 消息CPoint pt;
if(wParam == 'K' || wParam == 'k')
{
pt = pts[nCurrPointIndex++];
ClientToScreen(&pt);
SetCursorPos(pt.x,pt.y);
if(nCurrPointIndex>=MAXPOINTS)
nCurrPointIndex = 0;
}
int nCurrPointIndex = 0; //当前点的序号处理WM_KEYDOWN 消息CPoint pt;
if(wParam == 'K' || wParam == 'k')
{
nCurrPointIndex++;
if(nCurrPointIndex >= MAXPOINTS)
nCurrPointIndex = 0;
pt = pts[nCurrPointIndex];
ClientToScreen(&pt);
SetCursorPos(pt.x,pt.y);
}
问题是:我把鼠标的箭头放在一个点上,然后按下键盘上的 K 键,这时鼠标的箭头要马上跳到下一点上。再按一下 K 键,鼠标的箭头跳
到下一个点上,该怎么做?难点:鼠标控制是win2k所控制,我用的SDK,我怎么能让鼠标的箭头让我来控制。最好给我一个例子。