tener abiertas dos ventanas a la vez

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
xapu
Hacker del Foro
Mensajes: 82
Registrado: 12 Dic 2009, 15:42

tener abiertas dos ventanas a la vez

Mensaje por xapu »

ola buenas!!
lo que queria saver es si se pueden tener abiertas dos ventanas que esten integradas en el mismo programa y si se puede interactuar con las dos a la vez.
i si se puede como seria
yo he probado asi(aunke ia me imaginaba k no funcionaria :P)

Código: Seleccionar todo

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("Form1", 205, 64, 189, 125)
$Button1 = GUICtrlCreateButton("Button1", 16, 16, 169, 25, $WS_GROUP)
$Form2 = GUICreate("Form1", 205, 95, 419, 122)
$Input1 = GUICtrlCreateInput("Input1", 16, 32, 169, 21)
GUISetState(@SW_SHOW)

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

	EndSwitch
WEnd


- 0 error(s), 0 warning(s) :smt098 FUCK YEA!
http://xapus.blogspot.com/
Avatar de Usuario
Nahuel
Hacker del Foro
Mensajes: 194
Registrado: 27 Jun 2007, 23:32
Ubicación: Argentina
Contactar:

Re: tener abiertas dos ventanas a la vez

Mensaje por Nahuel »

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!
Responder