Bueno he visto por muchas sitios de internet que quieren hacer botones que cambien de imagen o texto cuando el mouse pasa sobre ellos y luego cambian otra vez al hacer click.. hay UDF en el foro de autoit pero super complicadas... lo que yo propongo es mucho mas sencillo y no necesitas instalar nada
Creas una GUI con una PIC
Código: Seleccionar todo
$Bnbmp1 = @ScriptDir & "\botona.bmp"
$Bnbmp2 = @ScriptDir & "\botonb.bmp"
$Bnbmp3 = @ScriptDir & "\botonc.bmp"
$gui = GUICreate("Prueba para el boton", -1, -1, -1, -1)
GUISetBkColor(0xE0FFFF)
$pic = GUICtrlCreatePic($Bnbmp1,200,200,100,100)
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
EndSwitch
WEnd
Ahora en el while le vamos a poner la funcion GUIGetCursorInfo() y que la guarde en una variable... aqui usaremos $amouse
Si vemos la ayuda de esa funcion nos dira que... "Obtiene la posición del cursor relativo a una ventana GUI."
Y mas abajo nos dice que nos devuelve un arreglo..
entonces arreglamos el code para que cuando el mouse pase encima del pic el pic cambie de imagen y otro para que cuando hagamos click en el pic, cambie a otra imagen mas...Con Éxitos devuelve un arreglo de 5 elementos conteniendo información del puntero del ratón:
$arreglo[0] = X coordenadas (horizontal)
$arreglo[1] = Y coordenadas (vertical)
$arreglo[2] = Botón primario oprimido (1 si es presionado, 0 si no es presionado)
$arreglo[3] = Botón secundario oprimido (1 si es presionado, 0 si no es presionado)
$arreglo[4] = ID del control sobre el cual el puntero es movido (o 0 si no es el caso)
Al Fallar 0 y fija @error a 1
IMPORTANTE: Tambien saber que error nos puede tirar para poner una respuesta frente a ese error sino la aplicacion crashea o funciona mal! :S
Tambien les dejo las imágenes del boton este que use. copienlas en la carpeta del script o pongan las suyas propias....
Código: Seleccionar todo
$Bnbmp1 = @ScriptDir & "\bot1.bmp"
$Bnbmp2 = @ScriptDir & "\bot2.bmp"
$Bnbmp3 = @ScriptDir & "\bot3.bmp"
$gui = GUICreate("Prueba para el boton", -1, -1, -1, -1)
GUISetBkColor(0xE0FFFF)
$pic = GUICtrlCreatePic($Bnbmp1, 150, 150, 100,100)
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
EndSwitch
$amouse = GUIGetCursorInfo()
If @error = 1 Then ContinueLoop
Select
Case Not $amouse[4] = $pic
GUICtrlSetImage($pic, $Bnbmp1)
case $amouse[2] = 1 and $amouse[4] = $pic
GUICtrlSetImage($pic, $Bnbmp3)
case $amouse[2] = 0 and $amouse[4] = $pic
GUICtrlSetImage($pic, $Bnbmp2)
EndSelect
WEnd
en el caso de que el mouse no esta encima del pic, ponga una imagen(la gris)
en el caso de que el mouse esta encima de la pic y el botón izquierdo del el esta presionado que cambie(verde)
en el caso de que el mouse esta encima de la pic y el boton no está presionado que cambie(amarillo)
Listo :) sencillo y facil !
mas adelante les pondré una manera de poner imágenes con semi transparencias y también fondo totalmente transparente.. hay una manera con una función que esta dando vueltas _setbitmap() pero creo que se puede hacer de una manera propia y entenderla... esta que ven a continuacion la hice con _setbitmap() y el boton de ahi se prende y apaga con efectos de luz bastante interezantes...