在CPP中添加全局函数
LRESULT CALLBACK MouseHookProc(int nCode, WPARAM wParam, LPARAM lParam);LRESULT CALLBACK MouseHookProc(int nCode, WPARAM wParam, LPARAM lParam)
{
     LPMOUSEHOOKSTRUCT pMouseHook=(MOUSEHOOKSTRUCT FAR *) lParam;     if ( nCode>=0 && ((CDCQApp *)g_App)->m_bGetMouseMsg )
     {
          switch( wParam )
          {
               case WM_LBUTTONDBLCLK:     // 为什么不能截获鼠标左键双击的消息?
                    break;
          }
     }     return CallNextHookEx( ((CDCQApp *)g_App)->m_hMouseHook, nCode, wParam, lParam );
}请问上面的程序为什么不能截获鼠标左键双击的消息?谢谢!

解决方案 »

  1.   

    整个钩子起到作用没有,还是单单WM_LBUTTONDBLCLK截获不到?估计你的钩子没正确安装。
      

  2.   

    case WM_LBUTTONDOWN:
    case WM_LBUTTONUP:
    case WM_RBUTTONDOWN:
    case WM_RBUTTONUP:
    case WM_MOUSEMOVE:这些消息都能响应!
      

  3.   

    switch( wParam )
         {
         case WM_LBUTTONDBLCLK:
              MessageBox( NULL, "鼠标右键双击", "MouseHook", MB_OK );
              break;
         case WM_LBUTTONUP:
              MessageBox( NULL, "鼠标左键弹起", "MouseHook", MB_OK );
              break;
         }这样写,鼠标左键双击后,也是弹出"鼠标左键弹起"的提示,真的搞不懂怎么回事,谢谢!
      

  4.   

    楼上 DentistryDoctor(雅克医生<改行做程序员了>) 说:
    "你是不是把单击都过滤了,那根本就不会有双击了。"什么意思,没看懂呀!
      

  5.   

    楼上  DentistryDoctor(雅克医生  <改行做程序员了  >)  说:  
     "你是不是把单击都过滤了,那根本就不会有双击了。  "  
     
    说的是什么意思呀? 偶没看懂! 能详细点吗?谢谢!
      

  6.   

    你可以查找一下倒底有哪些事件发生了. "你是不是把单击都过滤了,那根本就不会有双击了。  " 
    有可能是说你是不是在你的程序里某一个地方把过滤了系统的消息.比如把鼠标的又击给过滤过了.不过我想你可以没有这么做,但是我在HOOK里好像是可以得到这个消息的,我在.NET的里调用API实现HOOK时就做成了.所以你最好再看看你的代码,或想一下其它的办法.
      

  7.   

    能不能把你的代码发给我,我帮你看一下
    我的: [email protected]