我想重复使用 GUI 代码而不是制作多个副本,但 GUI 无法正确显示文本

我想重复使用 GUI 代码而不是制作多个副本,但 GUI 无法正确显示文本

我想重用 GUI 代码,而不是制作多个副本(代码冗余),但问题是,当我按下时1它显示First,但是当我按下时2它仍然显示First而不是Second

下面的代码不能正常工作:

Gui, status_GUI:-Caption +ToolWindow +AlwaysOnTop
Gui, status_GUI:Color, Black
Gui, status_GUI:Font, s13 cWhite

1::
    Hide_active_GUI()
    ;-------------- GUI start
    Gui, status_GUI:Add, Text,, First
    Gui, status_GUI:Show, x900 y850 NoActivate
    SetTimer, Hide_active_GUI, 500
    ;-------------- end GUI
Return

2::
    Hide_active_GUI()
    ;-------------- GUI start
    Gui, status_GUI:Add, Text,, Second
    Gui, status_GUI:Show, x900 y900 NoActivate
    SetTimer, Hide_active_GUI, 500
    ;-------------- end GUI
Return

Hide_active_GUI() {
    Gui, status_GUI:Hide
    return
}

下面的代码运行得很好,但最大的问题是代码冗余

1::
    Hide_first_GUI()
    
    ;-------------- GUI start
    Gui, first_GUI:-Caption +ToolWindow +AlwaysOnTop
    Gui, first_GUI:Color, Black
    Gui, first_GUI:Font, s13 cWhite

    Gui, first_GUI:Add, Text,, First
    Gui, first_GUI:Show, x900 y850 NoActivate
    SetTimer, Hide_first_GUI, 500
    ;-------------- end GUI
Return

2::
    Hide_second_GUI()

    ;-------------- GUI start
    Gui, second_GUI:-Caption +ToolWindow +AlwaysOnTop
    Gui, second_GUI:Color, Black
    Gui, second_GUI:Font, s13 cWhite

    Gui, second_GUI:Add, Text,, Second
    Gui, second_GUI:Show, x900 y900 NoActivate
    SetTimer, Hide_second_GUI, 500
    ;-------------- end GUI
Return

Hide_first_GUI() {
    Gui, first_GUI:Hide
    return
}

Hide_second_GUI() {
    Gui, second_GUI:Hide
    return
}

答案1

如果您想重用 GUI:

  • 将控制添加指令 ( Add, Text) 移出键绑定之外
  • 将其分配ContolIDv范围,例如:
Gui, status_GUI:Add, Text, vIndex, First
  • 使用以下方法更改键绑定中的文本GuiControl
GuiControl, Text, Index, Second

相关内容