请教大家。 我定义了一个mousemove事件,只要鼠标移动,事件就在不停的重新启动,有没有办法当鼠标移动完后,也就是停下来的时候再触发mousemove里面的事件呢?

解决方案 »

  1.   

    设置Timer获得鼠标位置
     如查相同
       设置Timer
          如查不相同
              重启事件, KillTimer()
     不相同这个方法比较笨, 可能还是错的....
      

  2.   

    其实我只是想在客户区用CTooltipCTRL来实时显示鼠标所在的位置而已,我在ONMouseMove里面实现的。代码很简单:   CString str;
      str.Format("X:%3d Y:%3d ",point.x,point.y);
      m_wndToolTip.UpdateTipText(str,FromHandle(m_Output[0]));.h中已声明   CToolTipCtrl m_wndToolTip;FromHandle(m_Output[0])是我的窗口句柄,现在问题是,当我鼠标移动的稍快一点的话,CPU占用率就明显的上升,最多的时候竟然占用了50%,我的CPU是CORE2 E7500,我想请教一下有没有好一点的办法来实现实时显示鼠标坐标的方法。  谢谢! 
      

  3.   

    这样应该会导致cpu利用率比较高啦,建议用Timer来实现.
      

  4.   

    你的方法没有问题
    可能是某些语句导致cpu占用比较严重
    你注释某些语句试试
    如果不加任何功能代码还有次问题那就不是你的问题而是系统本身的问题
    如果是因为某些操作的问题可以考虑看看是不是有其他替代的方法
      

  5.   

    这个问题到现在还在困扰着我! 这中间涉及到二个问题,一是CToolTipctrl的运行机制,二是OnMouseMove事件。 我检查过代码,发现是 m_wndToolTip.UpdateTipText(str,FromHandle(m_Output[0]))这行代码消耗着我的CPU资源,我不知道这行代码哪里有什么问题,每二个,我想追问一下大家关于鼠标状态机制,VC里头难道没有一种判断鼠标当前状态的方法吗??? 其实我想要的很简单,怎么判断当前鼠标是在移动过程中,如果在移动,那么事件就不触发,当停下来的时候则执行,不能实现吗?
      

  6.   

    大家有没有试过控件的WM_MOUSEHOVER消息呀,我测试过,但是好像没有收到过这个消息!所以不知道什么时候才能触发这个消息?
      

  7.   

    用_TrackMouseEvent才能触发WM_MOUSEHOVER | WM_MOUSELEAVE 等消息。
      

  8.   

    现在才结贴哈!   哈哈!
    最终用的settimer来实现的!