就是鼠标停止,不动2秒钟后,请高手赐教

解决方案 »

  1.   

    在OnIdle中SetTimer(0,2000,NULL);
    在OnTimer(...)调用函数即可!
      

  2.   

    敲错了,SetTimer(0,2000,NULL);改成SetTimer(1,2000,NULL);
      

  3.   

    在OnMouseMove中取系统时间,两次时间间隔大于2秒以上的话就调用你的函数.
      

  4.   

    smilewang(急速传说)的方法有个小瑕疵,就是当系统忙时,有可能一直在移动鼠标,但是却还是调用了函数。
    可以设置一个全局变量BOOL gbMouseMOved = TRUE;
    SetTimer(0,2000,NULL);OnTimer()
    {
        if (gbMouseMoved)
            gbMouseMoved = FALSE;
        else
            //执行超时函数
    }OnMouseMove()
    {
        gbMouseMoved = TRUE;
    }
      

  5.   

    我相信楼主的目的是要鼠标在窗口中停留两秒钟后有效,而不是只要鼠标进入窗口后两钟就执行函数。
    可以设置50毫秒的记时器,设置全局变量int nCounter = 0;在OnTimer中这样写
    POINT ptCursor;
    GetCursorPos(&ptCursor);
    RECT rcClient;
    GetWindowRect(hWnd, &rcClient);
    if(PtInRect(&rcClient,ptCursor))
    {//cursor is inside the window,so increase counter
       ++nCounter;
       if(nCounter == 40)
       {
           //do you stuff
           nCounter = 0;
        }
    }else{//cursor is not in the window, clear counter
        nCounter =0;
    }
      

  6.   

    听起来好象是TOOLTIP的状态!所以建议可以模拟tooltip的做法,只不过把show tooltip换成调用楼主的函数就是了~~~呵呵~~~just a advice~~~
      

  7.   

    可以先设置一个变量bool IsOnView;来记录是否是刚刚进入视图区,如果是就在OnMouseMove函数中调用SetTimer(ID,2000,NULL).在作一个在OnMouseLeave可以设置离开试图的过程,比如IsOnView设为Ture等等,接下来就在OnTimer作一个相应ID的动作就行了!
      

  8.   

    Ontimer计时是不准确的(特别系统忙的时候)