LED 风格显示控件和条形控件






4.97/5 (16投票s)
2000年1月18日

159304

7506
一个使用LED数字风格显示时间的控件,可以显示浮点数或整数
CStaticCounter
类简化了使用数字风格计数器显示时间和数值的过程 - 无需使用位图。
该类使用Keith Rule的双缓冲类来完全消除闪烁,并且使用MoveTo/LineTo
进行绘制,因此不依赖于位图。
最初的类是在很久以前编写的,可以在CodeGuru上找到。然而,这个版本的功能更多。新功能包括
- 浮点数显示
- 时间显示
- 修复Bug:Draw()函数中的内存泄漏
- 鼠标交互(可选),能够进行大 & 小的更改,并且这些更改会根据控件处于“float”或“integer”模式而进行调整。
- 3D进度条类(我从Paul Meidinger的非常酷的进度条控件中“借用”了该技术),我将其实现为一个单独的类,以便最大程度地重用
- 内置(可选)通知。在您的对话框中捕获WM_UPDATE_STATIC消息,并在用户与控件交互时获取最新的更改通知。
- 为您的每个或任何
CStaticCounter
控件提供ID,以便您在捕获WM_UPDATE_STATIC消息时识别它们 - 设置(可选)用于浮点数或整数显示的空白填充
- 定义您自己的格式字符串,以进一步自定义
CStaticCounter
的输出显示
该类还使用静态控件的尺寸来计算指标,这意味着它将绘制良好成形的数字,无需最少的干预,无论控件的大小如何。
如何使用 CStaticCounter
如果控件用于显示整数值
单击鼠标左键 将值减少 1 单击鼠标右键 将值增加 1 鼠标左键并拖动 增加或减少 (鼠标距离*1) 鼠标右键并拖动 增加或减少 (鼠标距离*0.01) - 但显示一个整数
如果控件用于显示浮点值
单击鼠标左键 将值减少 0.01 单击鼠标右键 将值增加 0.01 鼠标左键并拖动 增加或减少 (鼠标距离*1) 鼠标右键并拖动 增加或减少 (鼠标距离*0.01)
显示相关方法
void Display(CString strDisplay)
此函数将以数字计数器样式显示您的字符串,忽略除以下字符之外的所有字符:0 1 2 3 4 5 6 7 8 9 .
void Display(UINT uSecs=0, UINT uMins=0, UINT uHours=0, UINT uDays=0, CString strFormat="%D:%H:%M:%S")此函数允许您简单地告诉控件显示,例如,5196秒,只需键入
Display(5196)
。输出将以D:H:M:S格式显示,除非您相应地更改格式字符串(最后一个参数)。void DisplayCurrentTime(CString strFormat = "%H:%M:%S")