让 应用程序支持鼠标滚轮
作者:徐峰 来源: 论坛
一、提出问题
自从 年微软推出 鼠标后,带滚轮的鼠标开始大行其道,支持鼠标
滚轮的应用软件也越来越多。但我感到奇怪,为什么 到 本身仍然不支持鼠标滚轮,
可是从 就提供 事件了。
如何让 应用程序支持鼠标滚轮? !" 上有一篇解决 下应用 鼠
标的文章,它解决这一问题的方法是通过一个几十 # 的第三方控件实现的,可惜该控件没
有源代码。况且为了支持鼠标滚轮使用一个第三方控件,好像有点得不偿失。本文给出用
纯 实现这一功能的方法。
二、解决问题
我们知道 应用程序响应的 $% 传来的消息,需要通过 解释。可是很不幸,
虽然 解释所有得消息,却只让用户程序在事件中处理部分消息, 自己处理其他的消
息,或者忽略这些消息。
在 以前应用程序无法越过 直接处理消息,微软从 开始提供
&$$'()运算符,该运算符可以让用户程序将函数或者过程的地址传递给一个 &* 函数。
这样我们就可以在 应用程序中编写自己的窗口处理函数,通过 &$$'()运算符将在
中定义的窗口地址传递给窗口处理函数,从而绕过 的解释器,自己处理消息。事实
上,该方法可用于在 中处理任何消息。
实现应用程序支持鼠标滚轮的关键是,捕获鼠标滚轮的消息
+,(- .+../、,(- .+../。其中 +,(- .+../ 是为 准备
的,需要 驱动程序,而 ,(- .+../ 是目前各版本