Si se puede, claro. Y la verdad es muy fácil. Yo siempre prefiero usar el modo On Event. Es más... prolijo, fácil y ordenado.
Ejemplo de como se haría para múltiples ventanas:
Código: Seleccionar todo
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("GUiOnEventMode",1)
GUICreate("VENTANA PRINCIPAL", 211, 162,0,0)
GUISetOnEvent($GUI_EVENT_CLOSE,"_salir")
GUICtrlCreateButton("Crear Ventana", 68, 60, 95, 25, 0)
GUICtrlSetOnEvent(-1,"_CrearGUI")
GUISetState(@SW_SHOW)
While 1
Sleep(150)
WEnd
Func _salir()
Exit
EndFunc
Func _CerrarGUI()
GUIDelete(@GUI_WinHandle)
EndFunc
Func _Click()
MsgBox(0,"Click","Hizo click en una de las ventanas",-1,@GUI_WinHandle)
EndFunc
Func _CrearGUI()
GUICreate("", 211, 162)
GUISetOnEvent($GUI_EVENT_CLOSE,"_CerrarGUI")
GUICtrlCreateButton("Hacer Click", 68, 60, 95, 25, 0)
GUICtrlSetOnEvent(-1,"_Click")
GUISetState(@SW_SHOW)
EndFunc
Observá que podés crear muchas ventanas (no recuerdo el límite de AutoIt, pero es muchísimo) y cerrarlas independientemente. Podés crear diferentes controles en cada ventana y estos pueden actuar también de forma independiente. Si cerrás la ventana principal se cierran todas las otras ventanas (esto es en realidad por la forma en que hice el código). También podés hacerlo de la forma que a mi no me gusta, que es usando un ciclo con GuiGetMsg()
Código: Seleccionar todo
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$gui_central = GUICreate("VENTANA PRINCIPAL", 211, 162, 0, 0)
$boton = GUICtrlCreateButton("Crear Ventana", 68, 60, 95, 25, 0)
GUISetState(@SW_SHOW)
While 1
$msg = GUIGetMsg(1)
Switch $msg[0]
Case $GUI_EVENT_CLOSE
If $msg[1] = $gui_central Then
Exit
Else
GUIDelete($msg[1])
EndIf
Case $boton
GUICreate("Ventana nueva")
GUISetState()
EndSwitch
WEnd
La clave está en pasar el parámetro 1 a
GuiGetMsg de esa forma devuelve un array con informacion detallada sobre el evento y qué ventana lo disparó. Mirá en la ayuda de GuiGetMsg para saber más. Saludos!
No soy un hombre de plegarias, pero si estás en el cielo sálvame por favor Superman!