滚动条:第二章节
充满细节的滚动条
对于Windows开发者来说,与滚动条相关的开发应该不是很困难,因为它的基础原理不是很困难,但是围绕滚动条的还有许许多多的小细节问题需要解决。如果你不能彻底把这些细节问题搞明白,那么你所编写的程序会看来有些怪异,甚至你自己也不能用语言表达出来:它就是在某些地方有点怪怪的 ,就像一些背景的噪音一样让你感觉到不痛快。将这些细节问题弄明白,有助于你的程序干净,爽朗。
基础程序
让我们从之前的最基础程序开始,我们会在这个程序上慢慢加上一些滚动条有关的特性。之前的基础程序不过100多行代码,我们先添加如下的变量到这个程序中:

我们添加了3个变量,一个是字体句柄,用来控制列表的字体。一个是每行的高度,最后一个是列表的数量。
然后我们添加如下的几个函数:

代码讲解
在程序的OnCreate函数(WM_CREATE消息处理例程)中,我们通过SystemParametersInfo获取到了系统字体,然后通过这个字体构建了一个新的字体。将这个新的字体选择进DC后,我们就可以计算出在这种字体下的高度。
在OnDestory函数(WM_DESTORY消息处理例程)中,我们也要记得销毁我们创建的字体,否则会导致GDI资源泄露。

代码讲解
我们重新定义了一个新的函数PaintSimpleContent,这个函数会被我们的通用绘制函数PaintContent调用,也就是说,我们的界面实际绘制工作都会在PaintSimpleContent中实现。
在这个函数中,我们将新建的字体选择进WM_PAINT消息的DC中,并调用TextOut来绘制一行一行的文本。最后,我们将原来的字体选择回DC,程序结束。
好了,程序已经修改讲解完毕了,可以进行编译跑一跑了。
很抱歉,我用来讲述相关背景知识的时间还是有些长了,但是我们将会在第四章节感受到事情会变得有意思起来,相信我!
总结
我也开发了一段时间的Windows程序了,老实说,我是没太关注滚动条的细节,我也承认,我有时候会感到我对某些重要概念没有透彻的理解,我也感觉我的程序运行起来怪怪的(特别是涉及滚动条的时候)。Raymond,真被你说中了还。
本文来自:Raymond Chen的The Old New Thing博客,时间:2003年7月25日。
- 下一篇: VS Code C++扩展:11月更新
- 上一篇: 关于Tweak UI 2.10的更多问题与解答
相关推荐
- 窗口未响应时出现的白色闪烁
- Posted on 10月29日
- 第 1098 期:Windows 11 26H2 已广泛推送,我们看看如何下载并安装它
- Posted on 09月30日
- 第 338 期:微软计划始终在后台运行 Windows 11 文件资源管理器以加快加载速度
- Posted on 11月23日
- 第 978 期:为了让必应无处不在,微软专门开发了一个应用
- Posted on 08月22日



评论已关闭。