metest 发表于 2023-4-21 16:26:40

求助,如何让GUI界面在运行时防止闪烁

求大佬帮忙看下,如何防止在运行过程中出现闪烁的现象
以下为运行效果图



下方为GUI代码
#RequireAdmin
#include <Process.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

; 设置窗口参数
Local $GuiWidth = 441, $GuiHeight = 251 ; 窗口宽度和高度
Local $GuiTitle = "Form1" ; 窗口标题

; 创建无边框窗口在屏幕居中显示
Local $MainWindow = GUICreate($GuiTitle, $GuiWidth, $GuiHeight, (@DesktopWidth - $GuiWidth) / 2, (@DesktopHeight - $GuiHeight) / 2 , $WS_POPUP,$WS_EX_TOOLWINDOW)

; 设置窗口颜色(蓝色=0x2b579a,绿色=0x217346,红色=0xb7472a)
GUISetBkColor(0x2b579a)

; 创建显示控件
$Label1 = GUICtrlCreateLabel("软件安装", 15, 15, 325, 25)
GUICtrlSetFont(-1, 12, 400, 0, "微软雅黑")
GUICtrlSetColor(-1, 0xFFFFFF)
$Label2 = GUICtrlCreateLabel("请稍候", 124, 82, 165, 75, BitOr(0x200, 0x1))
GUICtrlSetFont(-1, 40, 400, 0, "微软雅黑")
GUICtrlSetColor(-1, 0xFFFFFF)
$Label3 = GUICtrlCreateLabel('....', 290, 82, 55, 75)
GUICtrlSetFont(-1, 40, 400, 0, "微软雅黑")
GUICtrlSetColor(-1, 0xFFFFFF)
$Label4 = GUICtrlCreateLabel("正在安装:", 15, 205, 410, 25)
GUICtrlSetFont(-1, 12, 400, 0, "微软雅黑")
GUICtrlSetColor(-1, 0xFFFFFF)
$Label5 = GUICtrlCreateLabel("(00/00)", 348, 15, 80, 25, BitOr(0x200, 0x1))
GUICtrlSetFont(-1, 12, 400, 0, "微软雅黑")
GUICtrlSetColor(-1, 0xFFFFFF)
GUISetState(@SW_SHOW)

; 循环显示动态效果
AdlibRegister("MyAdLibFunc", 500)

; 动态显示
Func MyAdLibFunc()
    ; 分配一个静态变量保存函数调用的次数.
    Local Static $iCount = 0
    $iCount += 1
    If $iCount = 1 Then GUICtrlSetData($Label3, '.')
    If $iCount = 2 Then GUICtrlSetData($Label3, '..')
    If $iCount = 3 Then GUICtrlSetData($Label3, '...')
    If $iCount = 4 Then
      GUICtrlSetData($Label3, '....')
      $iCount = 0
    EndIf
EndFunc

; 进入消息循环,等待用户交互
While 1
    If GUIGetMsg() = $GUI_EVENT_CLOSE Then ExitLoop
WEnd

; 删除窗口,并结束程序
GUIDelete($MainWindow)

chishingchan 发表于 2023-4-21 17:24:38

我的笨方法仅供参考,不建议采用!https://www.autoitx.com/thread-73241-1-1.html 代码:1楼代码 60 至 69 行
等高手解答,我也学习一下!

metest 发表于 2023-4-21 17:35:40

chishingchan 发表于 2023-4-21 17:24
我的笨方法仅供参考,不建议采用!https://www.autoitx.com/thread-73241-1-1.html 代码:1楼代码 60 至 69 ...




权限不够
:face (36):

chishingchan 发表于 2023-4-21 22:02:20

本帖最后由 chishingchan 于 2023-4-21 22:04 编辑

metest 发表于 2023-4-21 17:35
权限不够
简单的可以解释为:

While 1
$y = 获取控件状态
If $x <> $y Then ;当控件变化时
;执行某些语句
EndIf
$x = $y ;让控件状态赋值于变量(相等)
;其他语句
WEnd

zdphj 发表于 2023-4-24 10:31:53

路过,看看,学习学习。

smallan 发表于 2023-4-24 18:57:02

加个Sleep(250)试下

cmseo 发表于 2023-8-8 10:46:29

楼主的审美不错:face (1):
页: [1]
查看完整版本: 求助,如何让GUI界面在运行时防止闪烁