关于进度栏控件
进度栏是一个窗口,应用程序可以使用它来指示冗长操作的进度。
它由一个矩形组成,在操作的过程中,该矩形会产生动画效果。
下图显示了一个未使用视觉样式的进度栏。
下图显示了使用视觉样式的进度栏。 控件的外观会因操作系统和所选主题而异。 有关详细信息,请参阅视觉样式。
有关详细信息,请参阅以下标题。
使用进度栏
可以使用 CreateWindowEx 函数来创建进度栏,并指定 PROGRESS_CLASS 窗口类。 加载通用控件 DLL 时,会注册此窗口类。 有关详细信息,请参阅 About Common Controls。
Microsoft Visual Studio 工具箱中也有该控件,在其中它被称为“进度控件”。
范围和当前位置
进度栏的范围表示整个操作的持续时间,当前位置表示应用程序完成操作的进度。 窗口过程使用该范围和当前位置来确定进度栏的百分比,以便用亮色进行填充。
如果未设置范围值,系统会将最小值设置为 0,最大值设置为 100。 可以使用 PBM_SETRANGE 消息将范围调整为合适的整数。
进度栏提供了多条可用于设置当前位置的消息。 PBM_SETPOS 消息会将位置设置为给定值。 PBM_DELTAPOS 消息通过在当前位置上添加指定值来使位置向前推进。
可以通过 PBM_SETSTEP 消息为进度栏指定步进增量。 随后,每当向进度栏发送 PBM_STEPIT 消息时,当前位置就会以指定的增量向前推进。 默认情况下,步进增量将设置为 10。
默认进度栏消息处理
本节将介绍窗口过程如何处理 PROGRESS_CLASS 类的消息。
Message | 已执行的处理 |
---|---|
WM_CREATE | 分配并初始化一个初始结构。 |
WM_DESTROY | 释放与进度栏目关联的所有资源。 |
WM_ERASEBKGND | 绘制进度栏的背景和边框。 |
WM_GETFONT | 返回当前字体的句柄。 进度栏目前不绘制文本,因此发送此消息对控件没有任何影响。 |
WM_PAINT | 绘制进度栏。 如果 wParam 参数为非 NULL,则控件假定该值为 HDC,并使用该设备上下文进行绘制。 |
WM_SETFONT | 将句柄保存到新的字体,并将句柄返回到上一个字体。 进度栏目前不绘制文本,因此发送此消息对控件没有任何影响。 |
滚动文字样式
通过使用 PBS_MARQUEE 样式创建进度栏控件,可以将其制作成动画,以显示活动但不显示任务完成的比例。 进度栏上突出显示的部分会沿着进度栏的长度反复移动。 可以通过发送 PBM_SETMARQUEE 消息来启动和停止动画,并控制其速度。 滚动文字进度栏没有范围或位置。
下图显示了滚动文字模式下的进度栏。 突出显示的部分会在条形图上移动。