-
-
[原创]一个副产品:水晶进度条
-
发表于:
2007-7-16 10:11
10091
-
曾经想开发一个skin程序,居然拖延到现在没成功.平时在学校里也没有购置电脑,没有将该试验继续.
这个暑假刚回家,要在一个窗体上安置进度条,发现windows里comctl的进度条丑陋不堪,于是引用了以前开发一半的skin的代码,制作了一个"所谓"的"水晶进度条".
基本原理是RegisterClassEx()注册了一个窗体类,在wm_paint中施展一点雕虫小技,然后用窗体消息控制它,用控件窗体的标题来记录进度和配置. 为了使用方便,也便于其他语言的调用,把控制消息封装成函数.
网上注意观察了一下,大部分网上流传的水晶控件画法都是两个圆边矩形互相嵌套,如下:
(可能不能对齐,为了节省论坛空间就不贴图片了,只画个示意图,复制到记事本里能对齐的 )
_________________________________
/ _____________________________ \
/ / \ \
| | | |
| \______________________________/ |
| |
| |
\ /
\_________________________________/
由于我的美术功底.....( 汗...),所以最终只采用简单的渐变.
昨天,母亲为家里购置了新电脑.是PentiumCore2140,1G,GF7300正版vista prenium.惊奇的发现vista的taskbar居然使用的也是类似简单渐变(至少看上去像 ) 支持MS!
测试时发现一个问题,在一台旧的计算机上(Pentium3-667MHz,TNT2-16M)当刷新比较快时有时会露底(画面闪烁,有时闪出背景色又立即正常) :( (现在想了一下,如果被覆盖的那块背景不画,可能这个问题就解决了,新装好的系统,没有vc++,没法尝试)
这种"露底"只发生在一些性能不济的计算机上,虽未尝试在P4或PD的计算机上运行,但于这台CoreE2140上绝对不会出现"露底".相信在各位前辈的计算机上也应该不会,毕竟当前PIII<1G的计算机不多见了.该bug不会成为大问题
封装的函数说明见附件中的readme.
原始消息#define在.h中,都可以望文生义,lParam作为所需的参数,未列入readme中,相信在简洁的代码里能快速找到这些消息的简单实现
感谢各位浏览捧场,代码与DEMO附于附件中
////////////////////////////////////////////////////////////////////////////////
今天按照设想,限制了绘画的区域,果然没有再出现闪烁的情况,并美化了背景区,更新于附件中
[招生]系统0day安全班,企业级设备固件漏洞挖掘,Linux平台漏洞挖掘!