一、需求分析
由于sysInfo扫描的内容比较多,打算为它增加一点动画效果,提醒用户程序正在运行,耐心等待。
二、构建测试窗口
测试窗口上放置有一个按钮,按钮上的初始文字是“开始扫描”;并使用状态栏,状态栏初始状态不显示文字。
;
三、在状态栏显示字符动画
记得以前DOS时代使用冠群金辰的杀毒软件kill,在扫描时会显示一个扫描形状的字符动画,当时觉得很有意思,映像深刻,这次就把这种效果用在状态栏上。
实现的方法就是当用户点扫描使用定时器定时刷新状态栏的文字。其中的扫描动态效果就是将依次状态栏文字的首字依次更新为—(编码:0AAA1h)、\(编码:0DCA3h)、|(编码:0FCA3h)、/(编码:0AFA3h)。
代码如下:
;======================================================
Marquee proc
;======================================================
invoke statusBarMarquee
ret
Marquee endp
;======================================================
statusBarMarquee proc uses eax
;======================================================
inc g_dwLoop_Sb
.if g_dwLoop_Sb > 4
mov g_dwLoop_Sb, 1
.endif
mov eax, offset g_szScanning_Sb
.if g_dwLoop_Sb==1
mov word ptr [eax], 0DCA3h;'\'
.elseif g_dwLoop_Sb==2
mov word ptr [eax], 0FCA3h;'|'
.elseif g_dwLoop_Sb==3
mov word ptr [eax], 0AFA3h;'/'
.elseif g_dwLoop_Sb==4
mov word ptr [eax], 0AAA1h;'—'
.endif
服务器托管网 invoke SendMessage, g_hStatusBar, SB_SETTEXT, 0, OFFSET g_szScanning_Sb
invoke RedrawWindow, g_hStatusBar, NULL, NULL, RDW_INTERNALPAINT
ret
statusBarMarquee endp
四、按钮跑马灯
窗口上的按钮初始文字是“开始扫描”,当我们点击按钮进入扫描状态时,我们将按钮文字改成“点击停止”并跑马灯。原理也是使用定时器,定期更新按钮上的文字。
代码如下:
;==============================================服务器托管网========
Marquee proc
;======================================================
invoke btnMarquee
invoke statusBarMarquee
ret
Marquee endp
;======================================================
btnMarquee proc uses eax ;ebx
;======================================================
mov eax, offset g_szLoopTxt_btn
;保存按钮文本首字
push word ptr [eax] ;mov bx, word ptr [eax]
inc eax
inc eax
; 按钮文字前移
.while byte ptr [eax]!=0
push word ptr [eax]
pop word ptr [eax-2]
inc eax
inc eax
.endw
;把按钮文本首字放到末尾
pop word ptr [eax-2] ;mov word ptr [eax-2], bx
invoke SendMessage, g_hBtn ,WM_SETTEXT, 0, OFFSET g_szLoopTxt_btn
invoke RedrawWindow, g_hBtn, NULL, NULL, RDW_INTERNALPAINT
ret
btnMarquee endp
程序运行效果如下:
五、改进思路
文字动画在DOS的CGI时代还是颇具吸引力的,放到GUI时代复古一下也是一种怀念。
如果我们追求GUI的效果,可以对状态栏进行子类化,为它创建一个进度条。对按钮子类化,显示gif图片。
六、附记
进入Windows时代,Kill就像UCDOS一样淡出视野了。刚才为了确认无误,bing查了一下,冠群金辰的网站还在,只是内容很久没更新了。
不经意间顺带看到一篇关于火绒的文章,才知道火绒的几位创始人都出自瑞星……
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: Kafka-核心设计和实现原理,生产者和消费者详述
1.体系架构 Producer:生产者 Consumber:消费者 Broker:服务代理节点(kafka实例) 2.消息存储 主题(Topic):kafka消息以topic为单位进行归类,逻辑概念 分区(Partition): Topic-Partition…