说说滚动条的两种类型

说说滚动条的两种类型

作者:BlogUpdater |  时间:2021-02-22 |  浏览:918 |  评论已关闭 条评论

请记住,有两种类型的滚动条

一种是独立的滚动条控件。这种类型的滚动条有它自己的窗口句柄,因此你可以设置输入焦点以及可以做你能对窗口句柄做的其他所有操作。
要对其进行操作,只需要将滚动条控件的句柄传递给适当的滚动条函数(例如SetScrollInfo),并将SB_CTL作为nBar参数传递,以表明我们正在操作的是一个滚动条控件。

另一种类型是通过具有WS_HSCROLL和/或WS_VSCROLL样式而附加到窗口的水平或垂直滚动​​条(或两者)。
这些是非客户区滚动条,不是控件。它们可以看做是添加到其他窗口的装饰而已。你无法将输入焦点转移到这种类型的滚动条,因为它们本身并不是窗口。要操作它们,请将句柄传递到包含窗口的适当滚动条函数,并将SB_HORZ或SB_VERT作为nBar参数传递,以指明我们要操纵非客户区水平或垂直滚动​​条。

所以,现在大家应该知道这两种滚动条的区别了吧。如果使用非客户区滚动条,则MFC框架会帮助你完成大部分常规的实现,你无需涉足具体的滚动条操作。同时,框架也会暴露出一些公开接口,给予上层应用进一步定制个性化滚动条行为的能力。

最后,我写这篇文章的原因是:有些人似乎忽略了这两种滚动条之间的区别。

总结
在托管语言和Windowless界面大行其道的今天,你可能不太想研究这种细枝末节的东西了。
但有这么一个论点:上层变化了,底层不一定会变;底层变化了,必然导致上层的变化。
所以:是否愿意继续跟着我一起研究这些看起来没啥意思的东西?

最后
Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。
本文来自:《There are two types of scrollbars》

评论已关闭。