delphi7的Application.ProcessMessages作用

本文介绍如何使用application.ProcessMessages在循环中响应外界事件,避免程序独占,实现灵活中断循环的功能。
application.ProcessMessages的主要作用使程序在循环时能够相应外界事件。一般情况下,程序在循环的时候不响应外界事件。直到循环结束为止才能接受和响应外界事件。application.ProcessMessages可以有效的解决循环循环的独占问题,能够暂时中断应用程序的执行。比如,你要设计一个计算,这个计算需要循环10000次。当循环开始到500次的时候,用户突然不想计算下去了,它想取消这个计算,这时候你就可以设置一个cancel按钮,然后在循环体内部合适的位置application.ProcessMessages。来处理cancel按钮的信息,中断循环。如果你在循环体内没有application.ProcessMessages这句。当循环开始后,程序就被10000次的这个循环独占了,直到循环结束为止。在循环的期间,用户的按什么按钮都没有用。
function LoadDLL(Sender: TObject): Boolean; var CreateMainForm : function: TForm; stdCall; B : Boolean; begin Result := False; B := ParentIs('BDS.EXE'); SendMessage(frmsplash.Handle, Msg_Main, 204, 4); CheckParent; DM.ServerName := ''; DM.SysType := 0; uFunc.wpGrade.ParentName := 'gPallas.exe'; uFunc.wpGrade.SysName := 'gPallas'; uFunc.wpGrade.ProjectName := GetIniValue('gPallas', '项目名称', '广东省交通工程质量综合管理平台'); try Application.ProcessMessages; frmsplash.FormStyle := fsNormal; if not uFunc.wpGrade.UpgradeStartup(True) then Exit; frmsplash.FormStyle := fsStayOnTop; Application.ProcessMessages; SendMessage(frmsplash.Handle, Msg_Main, 204, 1); frmsplash.FormStyle := fsNormal; Application.ProcessMessages; if not LoadDLL_Resource then Exit; //资源文件,与其他无关 if not B then frmsplash.FormStyle := fsStayOnTop; Application.ProcessMessages; frmsplash.FormStyle := fsNormal; Application.ProcessMessages; if not LoadDLL_wpFunc then Exit; //通用函数,与其他无关 if not B then frmsplash.FormStyle := fsStayOnTop; Application.ProcessMessages; frmsplash.FormStyle := fsNormal; Application.ProcessMessages; if not LoadDLL_weepalsc(True) then Exit; //扩展函数,关联 wpFunc.DLL、UDM if not B then frmsplash.FormStyle := fsStayOnTop; Application.ProcessMessages; if lhwpBasic = 0 then Exit; @CreateMainForm := GetProcAddress(lhwpBasic, PAnsiChar('_CreateMainForm')); if @CreateMainForm = nil then Exit; if CreateMainForm = nil then Exit; except on E: Exception do begin ShowMessage(E.Message); TerminateProcess(OpenProcess(PROCESS_TERMINATE, Bool(0), GetCurrentProcessId), 0); end; end; Result := True; end;
最新发布
10-30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值