我用鼠标钩子作鼠标中间的按键响应,我想把中间键按下两秒后做一个响应,代码如下在  OnInitDialog()  中添加  
SetWindowsHookEx(WH_MOUSE,MouseProc,NULL,GetCurrentThreadId());  
 
在全局添加  
LRESULT  CALLBACK  MouseProc(  
   int  nCode,            //  hook  code  
   WPARAM  wParam,    //  message  identifier  
   LPARAM  lParam      //  mouse  coordinates  
)  
{  
           if(WM_MBUTTONDOWN==wParam)
            {
             SetTimer(0,2000,NULL);//设立计数器,时间为2000
             return  1; 
             }   
                 else  
           return  0;  
}然后再OnTimer 里面写的我的相应操作,但是它会抱错的
error C2660: 'SetTimer' : function does not take 3 parameters好像在鼠标钩子的判断里面不能加一些东西,好像那些东西还没有初始化,我把钩子过程函数放到OnInitDialog() 的下面,抱错更多,要解决我这种想法,怎么做呢?高手们帮帮忙,谢谢了!

解决方案 »

  1.   

    把SetTimer(0,2000,NULL);换成::Sleep(2000);试试
      

  2.   

    或者你可以使用带回调函数类型的SetTimer函数UINT SetTimer( UINT nIDEvent, UINT nElapse, void (CALLBACK EXPORT* lpfnTimer)(HWND, UINT, UINT, DWORD) );void CALLBACK EXPORT TimerProc(
       HWND hWnd,      // handle of CWnd that called SetTimer
       UINT nMsg,      // WM_TIMER
       UINT nIDEvent   // timer identification
       DWORD dwTime    // system time
    );
      

  3.   

    哦!sleep一下是可以了,我的程序是这样的,按一下鼠标中间键是最大化另一个程序,按两秒鼠标中间键,再把它缩小,但是现在出现问题了,我sleep后,那个程序是最小化了,但是好像就停止了,再按鼠标中间键,就不起作用了,我想是不是没有killtimer,我就kill了一下,结果还是那样,好像一执行ontimer后,主程序就有点停滞,不知道怎么回事,大家帮我分析一下,我会多加分的