是全局的..?我试过MOUSEMOVE可以啊...

解决方案 »

  1.   

    你怎么用WH_CALLWNDPROC啊?为什么不用WH_MOUSE?
    我认为使用SetCapture不好,因为这样的话正常的点击都会失效,你的程序总不能负责分发鼠标消息吧?
      

  2.   

    MFC的WWnd类有一个“捕鼠器”SetCapturer()函数,该函数将所有的鼠标输入送到当前窗口,不管光标在什么地方!当当前窗口不用它时,最好将它放掉,ReleaseCapture();
      

  3.   

    to sxbyl:我用的就是WH_MOUSE,你为什么说我用WH_CALLWNDPROC?看来是我的钩子有问题。是不是上边的代码只有在WH_CALLWNDPROC时才会有?哪WH_MOUSE怎么用?
      

  4.   

    我改成了WH_MOUSE,但这样更无法判断WM_LBUTTONUP消息了?
    LRESULT WINAPI MouseProc(int nCode,WPARAM wParam,LPARAM lParam)
    {
        LPMOUSEHOOKSTRUCT pMouseHook=(MOUSEHOOKSTRUCT FAR *) lParam; 
        if (nCode>=0)
        {
             //Do What?
        }
        return CallNextHookEx(g_hHook,nCode,wParam,lParam);
    }
      

  5.   

    你看一下MSDN中关于MouseProc的说明
    wParam 
    Specifies the identifier of the mouse message. 
    wParam就是WM_LBUTTON之类的消息,按键的具体信息在lParam里
      

  6.   

    还有,你MouseProc的申明有问题,应该是
    LRESULT CALLBACK MouseProc(int nCode,WPARAM wParam,LPARAM lParam)
      

  7.   

    确定你用的是WH_MOUSE钩子吗?那么,你判断消息类别的语句有问题。试着用下面的看看:
    LRESULT CALLBACK Mouse(int code,WPARAM wParam,LPARAM lParam)
    {
        if(code==HC_ACTION)
        {
            if(wParam==WM_LBUTTONUP)
            {
                MessageBox(.......);
            }
        }
    }