小甲鱼 发表于 2015-8-24 16:16:10

第014讲:滚动条3

知识点回顾:


1. 应该使用 SetScrollInfo 和 GetScrollInfo 函数来实现滚动条

你完全可以把 SetScrollInfo 函数当成是 SetScrollRange 函数和 SetScrollPos 函数的合体;GetScrollInfo 函数当成是 GetScrollRange 函数和 GetScrollPos 函数的合体。但新的函数至少有个好处,就是 SetScrollInfo 函数和 GetScrollInfo 函数是使用一个 SCROLLINFO 结构来存放参数的,这样做更有利于今后的兼容。


2. SCROLLINFO 结构

当你熟悉 Windows 应用程序开发后,你会发现还有其他很多结构也是类似这样,第一个成员用于存放该结构的大小,这样,以后的 Windows 版本可以扩充结构而同时保持与以前的应用程序兼容。

结构的第二个成员 fMask 举个例子给大家讲下(请参考 SCROLLINFO 结构):比如我设置 fMask 为标志 SIF_RANGE,那么我接着调用 SetScrollInfo 函数就会将 nMin 和 nMax 的值设置到窗口的滚动条里去。相反,如果我接着调用的是 GetScrollInfo 函数,那么函数会获取窗口的滚动条的范围,并填充到 nMin 和 nMax 这两个参数中。


3. ScrollWindow 函数的要点

ScrollWindow 函数有什么特性呢?它的主要功能是将内容滚动起来。你没听错,它会去滚动客户区里边的内容。滚动的距离就是 Xamount 和 Yamount 参数设定的值。

不过一定要注意的是,它只能滚动已显示的内容,然后将未覆盖的地方(也就是滚动后腾出的那一部分空间)变成失效区域,这样的话,当窗口过程接收到 WM_PAINT 消息的时候,就可以只对失效的区域进行重绘了。

另外有个高级版:ScrollWindowEx


WinSDK

谦虚求学 发表于 2016-10-27 12:19:45

{:5_108:}

太别致旳温柔 发表于 2018-3-18 23:00:29

{:5_92:}

怀远人物 发表于 2018-8-23 08:14:25

{:10_266:}{:10_266:}{:10_266:}{:10_266:}{:10_266:}{:10_266:}{:10_266:}

SuperJd 发表于 2020-2-22 21:23:58

{:5_105:}

xycwr 发表于 2022-5-2 00:04:35

{:5_90:}
页: [1]
查看完整版本: 第014讲:滚动条3