建立更好的滚动
SYSMETS2动作良好,但它只是模仿其他程式中的卷动列,并且效率很低。很快我将示范一个新的版本,改进它的不足。也许最有趣的是这个新版本不使用目前所讨论的四个卷动列函式。相反,它将使用Win32
API中才有的新函式。
卷动列资讯函式
卷动列文件(在/Platform SDK/User Interface Services/Controls/Scroll
Bars中)指出SetScrollRange、SetScrollPos、GetScrollRange和GetScrollPos函式是「过时的」,但这并不完全正确。这些函式在Windows
1.0中就出现了,在Win32
API中升级以处理32位元参数。它们仍然具有良好的功能。而且,它们不与Windows程式设计中新函式相冲突,这就是我在此书中仍使用它们的原因。
Win32
API介绍的两个卷动列函式称作SetScrollInfo和GetScrollInfo。这些函式可以完成以前函式的全部功能,并增加了两个新特性。
第一个功能涉及卷动方块的大小。您可能注意到,卷动方块大小在SYSMETS2程式中是固定的。然而,在您可能使用到的一些Windows应用程式中,卷动方块大小与在视窗中显示的文件大小成比例。显示的大小称作「页面大小」。演算法为:
