- 对话框种类分类:
滚动条有水平和垂直两种,默认的 SCROLLBAR 定义的是 水平滚动条,它的默认风格是 SBS_HORZ
要定义垂直滚动条,后面则要加上 SBS_VERT 风格

- 滚动条的消息发送:
- 和其他子窗口控件发送 WM_COMMAND 消息不同,水平滚动条向对话框发送 WM_HSCROLL消息,而垂直滚动条则发送WM_VSCROLL消息,所以应该分别进行处理。
- 消息格式:
-
其中, nScrollCode 代表了滚动条当前动作,定义值及其含义如下:

-
nPos的值只有当前动作码是 SB_THUMBPOSITION(滚动条被拖动到某处) 或 SB_THUMBTRACK(滚动条在拖动中) 时才有效,其他的时候为0.
-
注意事项:
- 其无论什么滚动条都统一发送 WM_HSCROLL(水平) 和 WM_VSCROLL(垂直)。
- 所以,若存在多个水平滚动条,先统一用 WM_HSCROLL 接收,然后再取出 lParam,通用 控件ID 来判断这个是哪个水平滚动条,然后再进行相应的处理判断。
- 滚动条各个控件产生的 nScrollCode 码如下:

- 滚动条的位置计算判断:
- 用户在拉动滚动条后,滚动条不会自己移动位置,它只是将用户的动作以 WM_xSCROLL消息的形式反馈给程序,真正要移动它还是要靠程序来设置。
- 所以,代码中必须要根据不同的动作首先计算出新的位置,并判断程序是否越界,下列是判断程序越界的代码,最后一步使用 SBM_SETRANGE 这个消息表示 设置好滚动条的新位置,来展示给用户:(注意,在MASM语句中提到过, .if dwPos > 0 只能是比较无符号数,所以这里使用 cmp 来构建分支。)

- 初始化时使用 SBM_SETRANGE 来设计 滚动条 范围:

-
win32 5.4 对话框 使用滚动条
最新推荐文章于 2026-03-11 21:33:10 发布
本文介绍了如何在Win32对话框中添加和使用滚动条,包括水平和垂直滚动条的风格设置,以及它们各自发送的WM_HSCROLL和WM_VSCROLL消息。在处理这些消息时,需要注意消息中的nScrollCode和nPos参数,以及如何通过控件ID判断滚动条。同时,文章强调了滚动条位置更新的逻辑,包括计算新位置、防止越界和使用SBM_SETRANGE设置滚动条范围的操作。

1016

被折叠的 条评论
为什么被折叠?



