Página 1 de 1

Ocultar/Mostrar aplicación

Publicado: 10 Mar 2009, 21:50
por N4THAN1EL
Buenas :smt001 Haciendo mi reproductor de música me ha surgido la duda de cómo hacer que se muestre y se oculte en la barra de tareas, he estado leyendo sobre el TraySetState, TraySetToolTip pero no acabo de encontrar el mecanismo adecuado, si pudieras hacerme un prototipo sencillo lo agradecería mucho.

Gracias.

Re: Ocultar/Mostrar aplicación

Publicado: 10 Mar 2009, 23:52
por Chefito
Pero que es lo que quieres??? que por ejemplo cuando le des al boton de minimizar desaparezca la aplicación y aparezca el icono en la barra de herramientas????
Explicate mejor.

Para mostrar el icono se utiliza TraySetState(1) y para ocultarlo TraySetState(2). Simplemente eso.

Si lo que quieres hacer es algo como lo que te dije al principio, tienes que hacer que cuando le des al botón minimizar de la ventana principal (eso se detecta cuando la funcion GuiGetMsg() lanza el mensaje $GUI_EVENT_MINIMIZE), cambiar el estado de la ventana a oculta con GUISetState(@SW_HIDE), e inmediatamente después hacer visible el icono en la barra de herramientas con TraySetState(1). Al contrario sería con GUISetState(@SW_SHOW) e inmediatamente TraySetState(2).

Intenta algo y ya nos dirás.

Saludos.

Re: Ocultar/Mostrar aplicación

Publicado: 11 Mar 2009, 18:25
por N4THAN1EL

Código: Seleccionar todo

#include <GUIConstantsEx.au3>

$Form1 = GUICreate("Form1", 291, 172, 193, 115)
$Input1 = GUICtrlCreateInput("Input1", 48, 56, 177, 21)
GUISetState(@SW_SHOW)
GUISetState(@SW_SHOW)

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
	Case $GUI_EVENT_MINIMIZE
		GUISetState(@SW_HIDE)
		TraySetState(1)
	Case $GUI_EVENT_CLOSE
		Exit
	EndSwitch
WEnd
Ahora con esto quiero hacer que al hacer click en el icono en la barra de tareas se vuelva a mostrar la ventana, cómo sería?

Re: Ocultar/Mostrar aplicación

Publicado: 12 Mar 2009, 07:57
por Chefito
Algo así???

Código: Seleccionar todo

#Include <Constants.au3>
#include <GUIConstantsEx.au3>
#NoTrayIcon		;no pone el icono en el Tray.

Opt("TrayMenuMode",1)	;quita el menu del icono

$Form1 = GUICreate("Form1", 291, 172, 193, 115)
$Input1 = GUICtrlCreateInput("Input1", 48, 56, 177, 21)
GUISetState(@SW_SHOW)

While 1
   $nMsg = GUIGetMsg()
	$msgTray=TrayGetMsg()	;recoge los mensajes creados por el Tray.
	If $msgTray=$TRAY_EVENT_PRIMARYDOWN Then	;si cliqueas encima del icono, la ventana se restaura y desaparece el icono.
		GUISetState(@SW_SHOW)
		GUISetState(@SW_RESTORE)
		TraySetState(2)
	EndIf
   Switch $nMsg
   Case $GUI_EVENT_MINIMIZE
      GUISetState(@SW_HIDE)
      TraySetState(1)
   Case $GUI_EVENT_CLOSE
      Exit
   EndSwitch
WEnd
Saludos.

Re: Ocultar/Mostrar aplicación

Publicado: 12 Mar 2009, 15:41
por N4THAN1EL
Perfecto :smt023 ! No conocía la función $TRAY_EVENT_PRIMARYDOWN, muchas gracias =)

Re: Ocultar/Mostrar aplicación

Publicado: 12 Mar 2009, 15:54
por Chefito
Mmmmm...no es una función, es una constante. La función TrayGetMsg() devuelve los eventos como valores numéricos, y AutoIt los ha declarado en varias constantes.
Mira en la ayuda la función TrayGetMsg(). Hay están todas las constantes devueltas por ésta según la acción que hagas.

Saludos.

Re: Ocultar/Mostrar aplicación

Publicado: 12 Mar 2009, 19:53
por N4THAN1EL
Gracias por la aclaración :smt001