Hi Leute, da binn ich mal wieder^^
Ich habe folgendes Problem:
Ich habe ein Schript geschreiben, in dem ich versuchen wollte einen Transparenten Ramen zu machen, und hab es mit CHILD-Fentser gemacht!
Allerdings wir das Fenster nicht aktualisiert Ich muss erst ein Fenster drüberzeihen oder es Minimieren und wieder maximieren.
Ist das bei euch uach so?
Ich verstehe nucht warum das so ist! Ich habe das bei den Runde Buttons doch genaueso gemacht, und es geht!
Mein versuch
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$Ramen = GUICreate ("Transparenter Ramen",400,400,400,400,$WS_POPUP)
GUISetBkColor (0x0077FF,$Ramen)
GUICtrlCreateLabel ("",0,0,400,400,$WS_EX_TRANSPARENT,$GUI_WS_EX_PARENTDRAG)
$Pos = WinGetPos ($Ramen)
$Innen = GUICreate("", $Pos[2] -15, $Pos[3] -35, 5,25,$WS_POPUP,$WS_EX_MDICHILD, $Ramen);
GUISetBkColor (0x00FF00,$Innen)
GUISetState (@SW_SHOW,$Ramen)
GUISetState (@SW_SHOW,$Innen)
WinSetTrans ($Ramen,"",200)
While 1
Sleep (100)
WEnd
Hier mal das mit den Buttons
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Dim $Button[2],$Icon[2]
#Region ### START Koda GUI section ### Form=C:\Dokumente und Einstellungen\Hendrik\Favoriten\Eigene Dateien\AutoIt\Übungen\XSkin\Oberfläche\XSkin.kxf
$Titel = "INC"
$Form2 = GUICreate($Titel, 555, 532, 303, 219,$WS_POPUP)
GUISetBkColor (0x00FF00)
$Pic1 = GUICtrlCreatePic(@ScriptDir & "\Data\1.bmp", 0, 0, 555, 532, $WS_CLIPSIBLINGS)
$Label1 = GUICtrlCreateLabel(" "& $Titel, 0, 0, 555, 32,$WS_EX_TRANSPARENT, $GUI_WS_EX_PARENTDRAG)
GUICtrlSetBkColor (-1,$GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor (-1,0xFF0A000)
GUICtrlSetFont (-1,12,550,0,"Arial")
$Button[0] = GUICreate("", 16, 16, 525, 3, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $Form2);
$Icon[0] = GUICtrlCreatePic(@ScriptDir & "\Data\X.gif",0, 0, 16, 16, BitOR($SS_NOTIFY,$WS_GROUP))
$Button[1] = GUICreate("", 16, 16, 500, 3, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $Form2);
$Icon[1] = GUICtrlCreatePic(@ScriptDir & "\Data\_.gif",0, 0, 16, 16, BitOR($SS_NOTIFY,$WS_GROUP))
DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $Form2, "int", 400, "long", 0x00040010);Slide von unten ein
GUISetState(@SW_SHOW,$Button[0])
GUISetState(@SW_SHOW,$Button[1])
GUISetState(@SW_SHOW,$Form2)
#EndRegion ### END Koda GUI section ###
Dim $Pfad[2][2],$Status[2]
$Pfad[0][0] = @ScriptDir & "\Data\X.gif"
$Pfad[0][1] = @ScriptDir & "\Data\X1.gif"
$Pfad[1][0] = @ScriptDir & "\Data\_.gif"
$Pfad[1][1] = @ScriptDir & "\Data\_1.gif"
$Status[0] = False
$Status[1] = False
_Ecken($Form2,0,0,10,10)
While 1
$iOldOpt = Opt("MouseCoordMode", 2)
$aPos = MouseGetPos()
$aPos3 = WinGetPos($Form2)
For $A = 0 To 1
$aPos2 = WinGetPos($Button[$A])
If IsArray ($aPos2) Then
$Point = _PointInEllipse($aPos[0], $aPos[1],$aPos2[0] - $aPos3[0] , $aPos2[1] - $aPos3[1], 16, 16)
_Pic($Icon[$A],$A)
EndIf
Next
Opt("MouseCoordMode", $iOldOpt)
$MSG = GUIGetMsg (1)
Switch $MSG[1]
Case $Button[0]
Switch $MSG[0]
Case $Icon[0]
GUIDelete ($Button[0])
GUIDelete ($Button[1])
DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $Form2, "int", 400, "long", 0x00050010);Slide nach unten aus
Exit
EndSwitch
Case $Button[1]
Switch $MSG[0]
Case $Icon[1]
DllCall("user32.dll", "int", "AnimateWindow", "hwnd", $Form2, "int", 400, "long", 0x00050005);Slide nach unten aus
GUISetState(@SW_MINIMIZE)
EndSwitch
EndSwitch
WEnd
Func _Ecken($h_win, $i_x1, $i_y1, $i_x3, $i_y3)
Local $XS_pos, $XS_ret, $XS_ret2
$XS_pos = WinGetPos($h_win)
$XS_ret = DllCall("gdi32.dll", "long", "CreateRoundRectRgn", "long", $i_x1, "long", $i_y1, "long", $XS_pos[2], "long", $XS_pos[3], "long", $i_x3, "long", $i_y3)
If $XS_ret[0] Then
$XS_ret2 = DllCall("user32.dll", "long", "SetWindowRgn", "hwnd", $h_win, "long", $XS_ret[0], "int", 1)
EndIf
EndFunc ;==>_GuiRoundCorners
Func _PointInEllipse($xPt, $yPt, $xTL, $yTL, $w, $h)
Local $bInside = False, $a = $w / 2, $b = $h / 2
Local $c1X, $c2X, $dist, $xc = $xTL + $a, $yc = $yTL + $b
$c1X = $xc - ($a ^ 2 - $b ^ 2) ^ (1 / 2); 1st focal point x position
$c2X = $xc + ($a ^ 2 - $b ^ 2) ^ (1 / 2); 2nd focal point x position
$dist = (($xPt - $c1X) ^ 2 + ($yPt - $yc) ^ 2) ^ 0.5 + (($xPt - $c2X) ^ 2 + ($yPt - $yc) ^ 2) ^ 0.5
If $dist <= $w Then $bInside = Not $bInside
Return $bInside
EndFunc ;==>_PointInEllipse
Func _Pic($hHandel,$Zahl)
If $Status[$Zahl] <> $Point Then
$Status[$Zahl] = $Point
If $Status[$Zahl] = True Then
GUICtrlSetImage ($hHandel,$Pfad[$Zahl][1])
ElseIf $Status[$Zahl] = False Then
GUICtrlSetImage ($hHandel,$Pfad[$Zahl][0])
EndIf
EndIf
EndFunc