为何OnMouseMove消息响应如此慢? 触发消息以及执行相应的程序代码总是需要时间的,而在这段时间内,你的鼠标光标可能已经移动了好几个点了。所以,没办法!至于坐标是否转换,得你自己看着办——反正从消息中得到的坐标是 Screen 的。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果你只是要判断鼠标是否进入控件或者离开,为什么不用 SetCapture 呢?这样,不管鼠标是否在你的控件上,这个控件都可以得到消息,你只需要判断鼠标坐标是否在控件内就可以了。如果不在控件内,则表示移出,同时 ReleaseCapture,待下一次 MouseMove 事件的时候,再 SetCapture,……如此反复!设置 1 个变量表示鼠标是否在控件上,如 BOOL mouseIn假设从鼠标消息得到的坐标点为 CPoint p控件所在矩形区假设为 CRect r那么在相关消息处理函数中可能写如下代码if (r包含(p) && !mouseIn) { SetCapture(); 执行鼠标进入需要执行的函数}else if (!r包含(p)) { ReleaseCapture(); 执行鼠标移出需要执行的函数}对不起,判断矩形是否包含点的函数名我忘了,你自己查查MSDN 吧 同意楼上,用SetCapture()和ReleaseCapture()可以很好的解决这个问题!!判断矩形是否包含点的函数名是:CRect rc;rc.PtInRect(point); 有一个函数,是GetGapture(),可以使你省一个bool变量 请教高手,如何让单文档应用程序不在标题栏上绘制标题 关于FlushViewOfFile的问题 如何提高WININET访问ASP的速度,解决并发性问题? 泼你们冷水:/ATL/WTL开发COM没前途 求助 FTP上传文件的问题,高手请进…… CSDN没高人了吗?请大家帮帮忙 在Server的OnAccept里可不可以知道请求方的IP和端口 win7 detour print api 为什么没有效果? 这段调用汇编使扬声器发音的程序为何编译通不过 如何理解COM中的组件类别 程序员@@眼里的CSDN
假设从鼠标消息得到的坐标点为 CPoint p
控件所在矩形区假设为 CRect r
那么在相关消息处理函数中可能写如下代码
if (r包含(p) && !mouseIn) {
SetCapture();
执行鼠标进入需要执行的函数
}
else if (!r包含(p)) {
ReleaseCapture();
执行鼠标移出需要执行的函数
}对不起,判断矩形是否包含点的函数名我忘了,你自己查查MSDN 吧
判断矩形是否包含点的函数名是:
CRect rc;
rc.PtInRect(point);