设为首页 加入收藏

TOP

三、Windows编程之滚动条—滚动条信息函数
2012-11-05 12:23:39 】 浏览:432
Tags:Windows 编程 滚动 信息 函数

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应用程序中,卷动方块大小与在窗口中显示的文件大小成比例。显示的大小称作「页面大小」。算法为:

 


可以使用SetScrollInfo来设置页面大小(从而设置了卷动方块的大小),如将要看到的SYSMETS3程序所示。

GetScrollInfo函数增加了第二个重要的功能,或者说它改进了目前API的不足。假设您要使用65,536或更大单位的范围,这在16位Windows中是不可能的。当然在Win32中,函数被定义为可接受32位参数,因此是没有问题的。(记住如果使用这样大的范围,卷动方块的实际物理位置数仍然由卷动列的图素大小限制)。然而,当使用SB_THUMBTRACK或SB_THUMBPOSITION通知码得到WM_VSCROLL或WM_HSCROLL消息时,只提供了16位数据来指出卷动方块的目前位置。通过GetScrollInfo函数可以取得真实的32位值。

SetScrollInfo和GetScrollInfo函数的语法是

SetScrollInfo (hwnd, iBar, &si, bRedraw) ;        GetScrollInfo (hwnd, iBar, &si) ;        
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇三、Windows编程之滚动条—滚动条.. 下一篇三、Windows编程之滚动条—绘图程..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目