给大家一个实验:
1.打开您的浏览器,进入一个网页(要很长,用飞轮拖动才能看完的那种)。
2.启动QQ,将QQ的窗口缩进到窗口顶部。
这里如图所示:
3.将鼠标移到QQ窗口的区域,使QQ的窗口弹出来,然后把鼠标移到QQ的窗口上,不要单击鼠标,然后滚动飞轮。
这里如图所示:好了,你看到了什么?我看到的是在我滚动飞轮的时候,不单止QQ的窗体里的内容跟着飞轮滚动,连浏览器里的页面的内容也跟着飞轮走。就是说尽管鼠标在QQ的窗体上,但是鼠标的飞轮滚动消息依然被浏览器收到并且相应了。
自己试一试,无论你看到了什么,成功与否,都上来说一声。如果你看到的与我看到的一样,请尝试解释这种现象。

解决方案 »

  1.   

    没出老兄说的问题,看老兄用的360浏览器,这让我想起了传说中的"XXX会收集用户信息,监视用户活动!",不知是谁Hook了鼠标,如果传说是真的,估计键盘也恼火!
      

  2.   

    对于滚动的处理方式不同而已,并不是同时获得焦点。不同程序对滚轮消息的响应有不同的处理方式。有的是焦点窗体的焦点控件响应滚轮消息,就算此时你鼠标指到其他地方去。很多程序都是这样。(比如我现在随便打开一个文件夹,还原,焦点在文件夹里,但是我鼠标指到外面去了,此时没有点击,焦点不变,滚动,文件夹还是会滚。)有的是焦点窗体内鼠标指针指到的控件响应消息,比如我现在在用FF浏览器,我鼠标放到页面上滚,是页面滚动。我把鼠标移动到标签栏上,并没有点击鼠标,也没有改变焦点,再滚动,就是标签滚动。若此时有其他总在最前的程序挡住了鼠标,焦点仍在FF内,FF也是不会滚的。(比如我现在FF还原了,焦点在窗体里,但是我鼠标移到外面去滚动,FF是没有反应的。)所以,当然也不排除有的程序的处理方式是:鼠标在控件的矩形坐标内就响应滚轮消息,不管是不是被其他东西遮住,或者焦点如何。而且,这东西可能跟鼠标驱动也有关。我记得以前我用过双飞燕的4D+鼠标,这丫的鼠标驱动是这样干的:你鼠标指到哪里,它就往那个地方直接投鼠标消息,不管焦点。(比如你安了这个驱动,还是随便打开一个文件夹,还原,焦点在文件夹里,鼠标指到外面没有焦点的某一个控件,此时滚动,会是后面那个控件滚动。)所以这个问题没什么好纠结的,估计是浏览器HOOK了滚轮消息,并且只是判断鼠标坐标是否在自己的控件范围内,然后就去响应消息,而没有判断是否有焦点,或者是否被其他窗口挡住,特别是这种应用,肯定不会用操作系统自带的简单控件,所以怎么处理完全看代码怎么写。这应该是属于代码严谨性的问题,或者当初设计的就是要这样的用户体验。举一个例子,你把机子上的魔兽争霸3以窗口模式开起来,然后随便用另一个窗口盖住它,保证焦点在前面的窗口上,移动鼠标到WAR3上,你会看到WAR3仍然在窗口上绘制出鼠标,并且如果你移到按钮上,按钮仍然会亮起来。就算你的指针是在前面遮住WAR3并且有焦点的那个窗口上,WAR3仍然会绘制鼠标并跟着移动(你可以把鼠标移动到前面窗口接近下边缘的地方,可以看到WAR3有那个手的鼠标指针。)很简单的一个技术问题,打这么多字只是不想看到它变成3Q大战的枪手素材,这种东西骗骗不懂技术的人还是挺管用的,哪一边都可以用来喷。