如何捕获到鼠标静止时候的消息?

gisren 2005-11-25 05:36:36
我希望鼠标移动后每次静止的时候,在鼠标的位置弹出一个消息对话框。
请问怎么做?
...全文
179 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Snow_Ice11111 2005-11-26
  • 打赏
  • 举报
回复
如何能想vb中的时间控件那样,在500毫秒,循环检测一下鼠标德位置呢?

-------------------------------------------------------------------------
定时检测在VC中不难实现,楼上gomoney(◎戈壁沙漠◎) 朋友说的用定时器这方法只是其中一种,可以考虑一下。
不过,要是你想每500毫秒检测一次鼠标位置,如果和上一次的一样就算是静止,再弹出个对话框的话我觉得有点不妥,因为可能会出现用户在500毫秒内移走鼠标再移回原位,可用你的方法判断的结果却是“静止”,这显然不合理。
用在PreTranslateMessage函数中处理鼠标的WM_MOUSEMOVE消息则是时时刻刻在检测鼠标位置(放心吧,这不会阻塞主线程的),每次检测的时候,你用两个变量分别记录位置pt和时间time,如果和上一次位置的不一样,就用新的记录下新的位置pt和时间time;反之,如果和上一次的位置一样则对这两个变量不作更改,留着下次再比较,直到当你比较时发现位置pt一样,而time相差大于你想设定的时间(如500毫秒),就是鼠标静止了500毫秒了,再弹出个对话框,这样就万无一失了。
gomoney 2005-11-25
  • 打赏
  • 举报
回复
定时器啊
SetTimer() //启动定时器
然后在
OnTimer() //响应定时事件
gisren 2005-11-25
  • 打赏
  • 举报
回复
能详细点吗
定时器 没有用过?
谢谢
njvisual 2005-11-25
  • 打赏
  • 举报
回复
用定时器,在一个间隔内检测鼠标。
gisren 2005-11-25
  • 打赏
  • 举报
回复
如何能想vb中的时间控件那样,在500毫秒,循环检测一下鼠标德位置呢?
Stefine 2005-11-25
  • 打赏
  • 举报
回复
前四楼的思想都一样

不过四楼的确实很具体

Snow_Ice11111 2005-11-25
  • 打赏
  • 举报
回复
在PreTranslateMessage函数中处理鼠标的WM_MOUSEMOVE消息,函数中的参数结构体指针pMsg中有个参数pt,里面记录的信息就是发送消息时鼠标在屏幕上的绝对坐标,单位是像素,把它用一个point变量记录下来,然后和上一次的pt进行比较,如果是一样的话就说明鼠标是静止的,当然还要结合另一个参数time(发送消息时的时间,数值大小为自系统启动以来经历的时间,单位是毫秒),两次的time之差大于你想设定的时间(如500ms)且pt值相同再在pt(当前鼠标的坐标)处弹出个你的对话框。
xl5338870 2005-11-25
  • 打赏
  • 举报
回复
恩,设一个定时器,在一个间隔内判断鼠标是否移动,
fine10000 2005-11-25
  • 打赏
  • 举报
回复
可以捕获鼠标的位置,然后隔一定时间检查位置是否发生变化,若没有变化,则可以调用函数,发出消息。
iriscat 2005-11-25
  • 打赏
  • 举报
回复
鼠标不动的时候没有消息

换句话说,需要用一个类似于Timer的东西每隔一段时间检测鼠标的位置

如果在一定时间间隔后发现鼠标位置没有动,就可以认为是静止的

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧