Hallo erstmal,
wenn ich ein neues GUI entwerfe, entstehen leider immer die gleichen Probleme. Eines davon würd ich nun gerne mal aus der Welt schaffen.
Und zwar geht es um folgendes:
Ein GUI-Fenster(500px * 300px) mit einem Hintergrundbild.
Das Hintergrundbild ist bei mir der Anfang allen übels, erst muss man die richtige Reihenfolge beim erstellen des GUIS einhalten. Dann muss man das Bild noch extra disablen [GUICtrlSetState($bgrImg,$GUI_DISABLE)]
Alles noch schön und gut. Dann kommt aber schon das nächste Problem mit dem $bgrImg.
Ich dachte mir: "Buttons? Die sehen mit der Zeit langweilig aus und passen nicht zu einem bunten GUI. Wieso nicht einfach ein kleines Bild mit [GUICtrlCreatePic] erstellen welches seine Farbe solange verändert, wie man draufklickt?!". Gesagt getan.:
Ich hab mir eine kleine Funktion gemacht, welche diesen "Austausch auf Klick" vornimmt.
->
#include-once
[/autoit][autoit][/autoit][autoit]; #INDEX# =======================================================================================================================
; Title .........: ButtonChangeColor
; Author(s) .....: Fabian Steinkogler
; ===============================================================================================================================
; #CURRENT# =====================================================================================================================
;_ButtonChangeColor
; ===============================================================================================================================
; #FUNCTION# ====================================================================================================================
; Name...........: _ButtonChangeColor
; Description ...: Ändert das jeweilige als Button gebrauchte Bild solange diese gedrückt wird.
; Syntax.........: _ButtonChangeColor($gImg1,$gImg2)
; Parameters ....: $gImg - Name der Variable des Bildes
;................: $sImg1 - Pfad zur ersten Datei
;................: $sImg2 - Pfad zur zweiten Datei
; Author ........: Fabian Steinkogler
; ===============================================================================================================================
Func _ButtonChangeColor($gImg,$sImg1,$sImg2)
If _IsPressed(01) = 1 Then ;Wenn die linke Maustaste gedrückt wird, dann...
Do ;erneuere...
GUICtrlSetImage($gImg,$sImg2, -1) ;das Bild solange...
Until _IsPressed(01) = 0 ;bis die linke Maustaste nicht mehr gedrückt wird.
EndIf
GUICtrlSetImage($gImg,$sImg1, -1) ;danach soll das Bild wieder durch das alte ersetzt werden.
EndFunc
Ja ich weiß, eine eigene UDF wäre nicht nötig gewesen, abgesehen davon, dass es von der Sorte schon X gibt. Aber ich fand es einfach nett, da ich das ganze hoffentlich noch öfters verwenden werde.
Nun aber zum eigentlichen GUI:
->
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Include <Misc.au3>
#include <Buttons.au3>
$mGUI = GUICreate("Login", 500, 300, 300, 218, -1, BitOR($WS_EX_TOOLWINDOW,$WS_EX_WINDOWEDGE))
$bgrImg = GUICtrlCreatePic(".\mainbgrimg.bmp", 0, 0, 500, 300)
GUICtrlSetState(-1,$GUI_DISABLE)
$gImg1 = GUICtrlCreatePic(".\settingsico1.bmp", 472, 272, 25, 25)
$gImg2 = GUICtrlCreatePic(".\helpbtnimg1.bmp", 464, 0, 35, 35)
GUICtrlCreateInput("Name",242,60,203,26,1,512)
GUICtrlSetFont(-1,12,400,default,"Technic")
GUICtrlCreateInput("Passwort",242,100,203,24,33,512)
GUICtrlSetFont(-1,12,400,default,"MS Sans Serif")
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $gImg1
_ButtonChangeColor($gImg1,".\settingsico1.bmp",".\settingsico2.bmp")
MsgBox(64,"","Error")
Case $gImg2
_ButtonChangeColor($gImg2,".\helpbtnimg1.bmp",".\helpbtnimg2.bmp")
MsgBox(64,"","Error")
EndSwitch
WEnd
Tja das Problem stellte sich beim Test recht schnell herraus:
Aus irgendeinem Grund mischt sich das verdammte $bgrImg wieder mal ein und blinzelt hin und da zwischen den Frames heraus (als weißes Flackern).
Für alle die es sich selber ansehen wollen:
http://www.file-upload.net/download-4011285/upload.zip.html
und wie es sich für einen Download gehört ein VirusTotalScanReport:
http://www.virustotal.com/file-scan/compact.html?id=011c1c0686e8c4083bc168d86fb24980cd1e83b436ea490dbefb9f2cb645dc2f-1325959811#
Mit freundlichen Grüßen
Fabian Steinkogler