|
|
发表于 2021-11-11 04:50:20
|
显示全部楼层
福建省泉州市
延时() 是系统全局延时
启动窗口的按钮事件子程序,按钮被点击后,代码命令就全部进入运行序列,后面载入窗口1,窗口1的执行序列就要排在启动窗口按钮时间执行序列的后面
也就是说,窗口1的按钮事件,被排到启动窗口按钮事件之后才执行了
精易模块的 程序_延时() 是优化过的,在延时时间内有个判断循环,有本程序的窗口或组件事件就释放控制权,优先处理窗口或组件事件
.版本 2
.子程序 程序_延时, 逻辑型, 公开, 不占用cpu,窗口不卡死,不影响其它代码执行
.参数 延时间隔, 整数型, 可空, 1000毫秒 = 1秒 留空为无限等待
.参数 延时单位, 长整数型, 可空, 默认为毫秒 0=毫秒 1=秒 2=分钟 3=小时
.局部变量 局_时间句柄, 整数型
.局部变量 局_时间, 程序延时
.判断开始 (延时单位 = 0 且 是否为空 (延时间隔))
延时间隔 = 5000 × 60 × 60
延时单位 = 5000 × 60 × 60
.判断 (延时单位 = 0)
延时单位 = 1
.判断 (延时单位 = 1)
延时单位 = 1000
.判断 (延时单位 = 2)
延时单位 = 1000 × 60
.判断 (延时单位 = 3)
延时单位 = 1000 × 60 × 60
.默认
.判断结束
局_时间.成员_时间 = -10 × 延时间隔 × 1000 × 延时单位
局_时间句柄 = CreateWaitableTimerA (0, 假, 0)
SetWaitableTimer (局_时间句柄, 局_时间, 0, 0, 0, 假)
.判断循环首 (MsgWaitForMultipleObjects (1, 局_时间句柄, 假, -1, 255) ≠ 0)
处理事件 ()
.判断循环尾 ()
CloseHandle (局_时间句柄)
返回 (真)
|
|