1、设置了全局鼠标钩子,在响应鼠标消息的时候,能不能屏蔽掉系统或当期窗口定义的对应操作呢???比如我写了WM_RBUTTONUP的操作,在桌面点的时候,只执行我定义的操作,在其他窗口也是,对应的右键菜单就不弹出来了。不知怎么搞的,现在的情况是我自己写的和系统的都同时在执行,比如在mousemove时,同时有画线和桌面拖出来的蓝框框。2、之前发帖问全屏画图,说GetWindowDC(NULL)可以,可是我试了试,有问题呀,当桌面开了几个窗口的情况下,这个函数在哪激活的,划线就只局限在那个窗口里了,到是全屏哪都可以得到那个DC,只不过得到以后,画的线就只在那个窗口里了,不算全屏画图吧,搞不懂3、跟问题2类似,想通过mouseproc函数的lParam去获取鼠标当前坐标信息时,有点小问题,HOOK是做到一个DLL里的,然后另一个程序去调用它,问题是,在那个程序窗口内执行的mouseproc能正确获取信息,但我要是在这个程序窗口外的其他地方点鼠标,那个获取到的鼠标坐标信息就出不来,搞不懂,为什么呢为什么呢??各位大哥大姐知道求帮帮忙啊,谢谢了,在尝试做一个鼠标手势的桌面版,类似StrokeIt,自己做着玩,想锻炼锻炼

解决方案 »

  1.   

    第1,你根据WindowFromPoint来判断当前窗口是否要操作的,不用操作的,那WM_LBUTTONDOWN那里就直接返回或者怎么的,不让它执行
    第2,GetWindowDC(NULL)没什么问题吧,我也搞不懂,用得不多
    第3,如果不行,你直接在mouseproc中用GetCursorPos来得到坐标
      

  2.   

    GetWindowDC(NULL),我试了可以
    WH_MOUSE,WH_MOUSE_LL的鼠标钩子过程中不调用 CallNextHookEx,返回一个非0值即可防止消息到达目标窗口
    我建议使用WH_MOUSE_LL,这样就无需使用dll