小甲鱼 发表于 2015-8-20 22:32:08

第012讲:滚动条

知识点回顾:


1. 获得客户区的尺寸有几种途径

如果你的客户区永远都是最大化状态,那么你可以通过上节课我们介绍的 GetSystemMetrics 函数,通过将 SM_CXFULLSCREEN 和 SM_CYFULLSCREEN 作为参数来获得当窗口被最大化时客户区的尺寸。

当然,你可以通过实时调用 GetClientRect 函数来获取当前客户区的大小。这都没有问题,但如果每次窗口尺寸一改变,我们就要调用一次 GetClientRect 函数,就显得没什么效率了。

那有没有更好的方法呢?其实是有的,当主窗口的客户区部分大小改变时,操作系统将给应用程序发送 WM_SIZE 消息,并把客户区新的宽度和高度分别存放在 lParam 参数的低 16 位和高 16 位。


2. 如何从 32 位的 lParam 参数中分离出低 16 位和高 16 位呢?

Windows 提供了两个宏来解决这个问题:LOWORD 和 HIWORD 宏


3. 如何在窗口上显示滚动条?

在 CreateWindow 的时候,第三个参数加上 WS_VSCROLL 或 WS_HSCROLL 即可添加对应的垂直滚动条或水平滚动条。


4. 当用户单击滚动条或拖动滑块时,Windows 就会向窗口过程发送 WM_VSCROLL 消息或 WM_HSCROLL 消息。


scf 发表于 2015-8-21 22:10:54

小甲鱼又回归了吗:loveliness:
页: [1]
查看完整版本: 第012讲:滚动条