网站集约化建设建议短期培训班学什么好
web/
2025/10/9 4:28:16/
文章来源:
网站集约化建设建议,短期培训班学什么好,网站建设需要考啥证,云南建设厅建筑业管理网站一、需求分析
由于sysInfo扫描的内容比较多#xff0c;打算为它增加一点动画效果#xff0c;提醒用户程序正在运行#xff0c;耐心等待。
二、构建测试窗口
测试窗口上放置有一个按钮#xff0c;按钮上的初始文字是“开始扫描”#xff1b;并使用状态栏#xff0c;状态… 一、需求分析
由于sysInfo扫描的内容比较多打算为它增加一点动画效果提醒用户程序正在运行耐心等待。
二、构建测试窗口
测试窗口上放置有一个按钮按钮上的初始文字是“开始扫描”并使用状态栏状态栏初始状态不显示文字。
;
; 文 件 名marquee.asm (GUI程序)
; 功 能: 文字动画
; 开发环境Win10 PRO MASM32 v22
; 作 者PurpleEndurer,广西河池
;.586
.MODEL FLAT,STDCALL
OPTION CASEMAP:NONEINCLUDE \masm32\include\windows.incINCLUDE \masm32\include\kernel32.inc
INCLUDELIB \masm32\lib\kernel32.libINCLUDE \masm32\include\user32.inc
INCLUDELIB \masm32\lib\user32.libinclude \MASM32\INCLUDE\shell32.inc
includelib \MASM32\LIB\shell32.libinclude \masm32\include\comctl32.inc
includelib \masm32\lib\comctl32.lib;ssssssssssssssssssssssss
;.const
;ssssssssssssssssssssssssc_MainWinStyle equ NULL
c_statusBarStyle equ SBARS_SIZEGRIP or WS_CHILD or WS_VISIBLE
c_BtnStyle equ WS_CHILD or WS_VISIBLE or BS_DEFPUSHBUTTON
c_BtnID equ 198
c_statusBarID equ 199
c_TimerID equ 1000;ssssssssssssssssssssssss
;PROTO
;ssssssssssssssssssssssssWinMain proto :HINSTANCE, :HINSTANCE, :LPSTR, :DWORD
WndProc proto :HWND, :UINT, :WPARAM, :LPARAM
ResizeMainWnd proto
Marquee proto
statusBarMarquee proto
btnMarquee proto;ssssssssssssssssssssssss
.DATA
;ssssssssssssssssssssssss
g_szClassName label byte
g_szAppInfo db 文字动画 作者PurpleEndurer, 广西河池, 0g_szBtnClsName db button, 0
g_szScan_btn db 开始扫描, 0 ;_btn 用于按钮
g_szStop_btn db 点击停止, 0
g_szLoopTxt_btn db 点击停止, 0g_szScanning_Sb db —正在扫描……, 0; _Sb用于状态栏
g_szScanOver_Sb db 扫描完成, 0 ;
g_dwLoop_Sb dword 0g_hInstance HANDLE ?
g_hwndMain HANDLE ?
g_hStatusBar HANDLE ?
g_hBtn HANDLE ?;ssssssssssssssssssssssss
.CODE
;ssssssssssssssssssssssss
start:invoke GetModuleHandle, NULLmov g_hInstance, eaxinvoke WinMain, g_hInstance, NULL, NULL, SW_SHOWDEFAULTinvoke ExitProcess, eaxinvoke InitCommonControls;
WinMain proc hInst:HINSTANCE, hPrevInst:HINSTANCE, CmdLine:LPSTR, CmdShow:DWORD
;LOCAL wc:WNDCLASSEXLOCAL msg:MSGmov wc.cbSize,SIZEOF WNDCLASSEXmov wc.style, CS_HREDRAW or CS_VREDRAWmov wc.lpfnWndProc, OFFSET WndProcmov wc.cbClsExtra, NULLmov wc.cbWndExtra, NULLpush hInstpop wc.hInstancemov wc.hbrBackground, COLOR_WINDOW1mov wc.lpszMenuName, NULL ;OFFSET MenuNamemov wc.lpszClassName, OFFSET g_szClassNameinvoke LoadIcon,NULL,IDI_APPLICATION ;invoke LoadIcon, hInst, IDI_ICONmov wc.hIcon, eaxmov wc.hIconSm, eaxinvoke LoadCursor, NULL, IDC_ARROWmov wc.hCursor, eaxinvoke RegisterClassEx, addr wcINVOKE CreateWindowEx, c_MainWinStyle, ADDR g_szClassName,ADDR g_szAppInfo,\WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, CW_USEDEFAULT,500,400,NULL,NULL, hInst,NULLmov g_hwndMain, eaxINVOKE ShowWindow, g_hwndMain, SW_SHOWNORMALINVOKE UpdateWindow, g_hwndMain.WHILE TRUEINVOKE GetMessage, ADDR msg,NULL,0,0.BREAK .IF (!eax)INVOKE TranslateMessage, ADDR msgINVOKE DispatchMessage, ADDR msg.ENDWmov eax, msg.wParamret
WinMain endp;
WndProc proc uses ebx hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
;mov eax, uMsg.IF eaxWM_CREATE;创建状态栏invoke CreateStatusWindow, c_statusBarStyle, NULL, hWnd, c_statusBarIDmov g_hStatusBar, eax;创建按钮invoke CreateWindowEx, NULL, ADDR g_szBtnClsName, ADDR g_szScan_btn,\c_BtnStyle, 75,70,140,25, hWnd, c_BtnID, g_hInstance, NULLmov g_hBtn, eax.ELSEIF eaxWM_COMMANDmov eax,wParam.if axc_BtnIDshr eax,16.IF axBN_CLICKED;用户点击按钮.if g_dwLoop_Sb0;进行扫描状态invoke SetTimer, hWnd, c_TimerID, 1000, NULLmov eax, OFFSET g_szStop_btn.else;退出扫描状态invoke KillTimer, hWnd, c_TimerID mov g_dwLoop_Sb, 0invoke SendMessage, g_hStatusBar, SB_SETTEXT, 0, OFFSET g_szScanOver_Sbinvoke RedrawWindow, g_hStatusBar, NULL, NULL, RDW_INTERNALPAINT mov eax, OFFSET g_szScan_btn .endifinvoke SendMessage, g_hBtn ,WM_SETTEXT, 0, eax.ENDIF.endif .ELSEIF eaxWM_TIMER;定时调用Marquee函数invoke Marquee.ELSEIF eaxWM_SIZEinvoke ResizeMainWnd.ELSEIF eaxWM_DESTROYinvoke PostQuitMessage,NULL.ELSEinvoke DefWindowProc,hWnd,uMsg,wParam,lParamret.ENDIFxor eax,eaxret
WndProc endp;
ResizeMainWnd proc
;invoke MoveWindow, g_hStatusBar, 0, 0, 0, 0, TRUEret
ResizeMainWnd endpEND start
三、在状态栏显示字符动画
记得以前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 4mov g_dwLoop_Sb, 1 .endifmov eax, offset g_szScanning_Sb.if g_dwLoop_Sb1mov word ptr [eax], 0DCA3h;.elseif g_dwLoop_Sb2mov word ptr [eax], 0FCA3h;.elseif g_dwLoop_Sb3mov word ptr [eax], 0AFA3h;.elseif g_dwLoop_Sb4mov word ptr [eax], 0AAA1h;—.endifinvoke SendMessage, g_hStatusBar, SB_SETTEXT, 0, OFFSET g_szScanning_Sbinvoke RedrawWindow, g_hStatusBar, NULL, NULL, RDW_INTERNALPAINT ret
statusBarMarquee endp
四、按钮跑马灯
窗口上的按钮初始文字是“开始扫描”当我们点击按钮进入扫描状态时我们将按钮文字改成“点击停止”并跑马灯。原理也是使用定时器定期更新按钮上的文字。
代码如下
;
Marquee proc
;invoke btnMarqueeinvoke 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 eaxinc eax; 按钮文字前移.while byte ptr [eax]!0push word ptr [eax]pop word ptr [eax-2]inc eaxinc eax.endw;把按钮文本首字放到末尾pop word ptr [eax-2] ;mov word ptr [eax-2], bxinvoke SendMessage, g_hBtn ,WM_SETTEXT, 0, OFFSET g_szLoopTxt_btninvoke RedrawWindow, g_hBtn, NULL, NULL, RDW_INTERNALPAINT ret
btnMarquee endp五、程序运行效果
如下 六、改进思路
文字动画在DOS的CGI时代还是颇具吸引力的放到GUI时代复古一下也是一种怀念。
如果我们追求GUI的效果可以对状态栏进行子类化为它创建一个进度条。对按钮子类化显示gif图片。 七、附记
进入Windows时代Kill就像UCDOS一样淡出视野了。刚才为了确认无误bing查了一下冠群金辰的网站还在只是内容很久没更新了。
不经意间顺带看到一篇关于火绒的文章才知道火绒的几位创始人都出自瑞星……
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/89437.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!