autoit 和 koda:gui create 如何知道要使用哪种 koda 形式?

autoit and koda: how does gui create knows which koda form to use?

我是 autoit 的新手,我想创建 2 个表单并通过单击第一个表单的按钮打开第二个表单。

这是我在 koda 中的表格:

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Act = GUICreate("Activités et Compétences", 615, 441, 196, 125)
$RetourAccueil=1
$ETAPE = 1

$Label1 = GUICtrlCreateLabel(" Activités && Compétences", 41, 12, 558, 85)
GUICtrlSetFont(-1, 36, 800, 0, "My Lucky Penny")
$PPE = GUICtrlCreateButton("PPE", 48, 168, 75, 25)
$TP = GUICtrlCreateButton("TP", 152, 168, 75, 25)
$TD = GUICtrlCreateButton("TD", 256, 168, 75, 25)
$STAGE1 = GUICtrlCreateButton("STAGE 1", 368, 168, 75, 25)
$STAGE2 = GUICtrlCreateButton("STAGE 2", 480, 168, 75, 25)
$Group1 = GUICtrlCreateGroup("Activités", 24, 136, 561, 81)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)


#EndRegion ### END Koda GUI section ###
Func RetourAccueil()

EndFunc
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit

        Case $PPE
            if $ETAPE=1 THEN
               GUICtrlSetData(-1, "|PPE2.1-Mission ADISPO|PPE -Installation PFSENSE|PPE-Cas Kaspersky|Autres")
            EndIf
         Case $TP
               $TP = GUICtrlCreateButton("NewName", 480, 168, 75, 25)
         Case $TD
                 $TD = GUICreate("Activités et Compétences", 615, 441, 196, 125)
               WinActivate($TDPAGE)
         Case $STAGE1
               MsgBox(64,'information','ok')
         Case $STAGE2

    EndSwitch
WEnd

这是我 运行 它的结果:

通过单击 TD 按钮,我想打开第二个表单并关闭第一个表单,但我不知道我是如何尝试的:

   Case $TD
            $TD = GUICreate("Activités et Compétences", 615, 441, 196, 125)
           WinActivate($TDPAGE)

但是没用...

在KODA中生成表单代码时,只会生成当前选中的表单的代码,所以需要另外生成第二个表单的代码。

您当前的代码不起作用的原因是默认情况下新的 GUI 是不可见的,您需要在创建它们之后通过执行 GUISetState(@SW_SHOW) 使它们可见(就像 KODA 生成的代码为第一种形式)。

如果要关闭第一个表单,请使用 GUIDelete()。如果你看AutoIt的文档,你会发现所有的GUI函数都接受一个可选参数来指定你想在哪个GUI上操作,如果你不指定它,它会使用你最后创建的window (或手术)。由于要专门删除第一个 GUI,因此必须确保在创建第二个 GUI 之前将其删除,或者明确指定要删除的 GUI,即 GUIDelete($Act).

最后,你好像写错了WinActivate($TDFORM)。您是要写 WinActivate($TD) 吗?无论如何,都不需要激活表单,因为新创建的 GUI 会自动激活。