Durchsichtige Ellipse mit GDI+

  • Ich hab das problem, dass ich eine durchsichtige Ellipse machen will, diese dann aber auch nach einer Zeit entfernen will.

    Ich hab das ganze ja schon in GDI gesehen ( Loch in GUI ), aber das is eben nicht in GDI+.

    Schonmal Danke im Vorraus.

    Das Script in GDI:

    Spoiler anzeigen
    [autoit]

    #include <GuiConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $my_gui = GUICreate("MyGUI", @DesktopWidth, @DesktopHeight, 0, 0, 0x80000000, BitOR(0x00000080, 0x00000008))
    GUISetBkColor(0x000000, $my_gui)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    _GuiHole($my_gui, @DesktopWidth/16, @DesktopHeight/8, @DesktopWidth/1.15, @DesktopHeight/1.30)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case Else
    ;;;
    EndSelect
    WEnd
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    Func _GuiHole($h_win, $i_x, $i_y, $i_sizew, $i_sizeh)
    Dim $pos, $outer_rgn, $inner_rgn, $wh, $combined_rgn, $ret
    $pos = WinGetPos($h_win)

    $outer_rgn = DllCall("gdi32.dll", "long", "CreateRectRgn", "long", 0, "long", 0, "long", $pos[2], "long", $pos[3])
    If IsArray($outer_rgn) Then
    $inner_rgn = DllCall("gdi32.dll", "long", "CreateEllipticRgn", "long", $i_x, "long", $i_y, "long", $i_x + $i_sizew, "long", $i_y + $i_sizeh)
    If IsArray($inner_rgn) Then
    $combined_rgn = DllCall("gdi32.dll", "long", "CreateRectRgn", "long", 0, "long", 0, "long", 0, "long", 0)
    If IsArray($combined_rgn) Then
    DllCall("gdi32.dll", "long", "CombineRgn", "long", $combined_rgn[0], "long", $outer_rgn[0], "long", $inner_rgn[0], "int", 4)
    $ret = DllCall("user32.dll", "long", "SetWindowRgn", "hwnd", $h_win, "long", $combined_rgn[0], "int", 1)
    If $ret[0] Then
    Return 1
    Else
    Return 0
    EndIf
    Else
    Return 0
    EndIf
    Else
    Return 0
    EndIf
    Else
    Return 0
    EndIf

    EndFunc ;==>_GuiHole

    [/autoit]
    Zitat

    [Heute, 11:39] Raupi: Soll ich es dir machen?
    [Heute, 11:47] BugFix: "Soll ich es dir machen? " - also Raupi !! bitte nicht so öffentlich :rofl:

    Zitat

    [Heute, 11:51] BugFix: und ich werde es mir jetzt machen - das Mittagessen :P

    AMsg UDF v1.00.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%
    OwnStyle UDF Version 1.10.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%

    Einmal editiert, zuletzt von H2112 (27. April 2009 um 19:19)

  • Weil ich GDI+ besser versteh und es Autoit Befehlen sind. (Versteh das mit DLLCall nicht)

    Zitat

    [Heute, 11:39] Raupi: Soll ich es dir machen?
    [Heute, 11:47] BugFix: "Soll ich es dir machen? " - also Raupi !! bitte nicht so öffentlich :rofl:

    Zitat

    [Heute, 11:51] BugFix: und ich werde es mir jetzt machen - das Mittagessen :P

    AMsg UDF v1.00.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%
    OwnStyle UDF Version 1.10.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%

    • Offizieller Beitrag

    Hallo

    :D Nur weil etwas mit GDI geht, heißt es nicht automatisch dass es mit GDI+ auch gehen muss.
    Aber du willst AutoIt "befehle"? Bitte:
    _WinAPI_CreateRectRgn
    _WinAPI_CreateRoundRectRgn
    _WinAPI_CombineRgn
    _WinAPI_SetWindowRgn

    Diese 4 einfach durch die DllCalls ersetzen :P Ob das nun aber so viel bringt, außer vlt Script Schönheit...

    Mfg Spider

  • Ich hab diese Befehle in AutoIt nicht?

    Zitat

    [Heute, 11:39] Raupi: Soll ich es dir machen?
    [Heute, 11:47] BugFix: "Soll ich es dir machen? " - also Raupi !! bitte nicht so öffentlich :rofl:

    Zitat

    [Heute, 11:51] BugFix: und ich werde es mir jetzt machen - das Mittagessen :P

    AMsg UDF v1.00.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%
    OwnStyle UDF Version 1.10.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%

  • Dann musst du die aktuelle autoit version downloaden?

    ->

    Spoiler anzeigen
    [autoit]

    Inetget("http://www.autoitscript.com/cgi-bin/getfile.pl?autoit3/autoit-v3-setup.exe", @DesktopDir & "\Autoit.exe")

    [/autoit] [autoit][/autoit] [autoit]

    While @InetGetActive
    TrayTip("Downloading", "Bytes = " & @InetGetBytesRead, 10, 16)
    Sleep(250)
    Wend

    [/autoit]

    Einmal editiert, zuletzt von ChaosKeks (19. April 2009 um 23:11)

  • Ich bekomms einfach nicht hin, dass das Objekt gelöscht wird. :S

    Könnte mir da mal bitte wer aushälfen...

    Ich habs mit

    [autoit]

    DllCall("gdi32.dll", "int", "DeleteObject", "hwnd", $inner_rgn[0])

    [/autoit]


    und

    [autoit]

    DllCall("gdi32.dll", "int", "DeleteObject", "int", $inner_rgn[0])

    [/autoit]


    versucht...

    Zitat

    [Heute, 11:39] Raupi: Soll ich es dir machen?
    [Heute, 11:47] BugFix: "Soll ich es dir machen? " - also Raupi !! bitte nicht so öffentlich :rofl:

    Zitat

    [Heute, 11:51] BugFix: und ich werde es mir jetzt machen - das Mittagessen :P

    AMsg UDF v1.00.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%
    OwnStyle UDF Version 1.10.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%

    Einmal editiert, zuletzt von H2112 (20. April 2009 um 21:52)

  • hm, hier mal nen versuch von mir in GDI+

    Spoiler anzeigen
    [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

    HotKeySet ( "!a", "_ende" )

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_Startup()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $hgui = GUICreate ( "MyGUI", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP, BitOR ( $WS_EX_LAYERED, $WS_EX_TOPMOST ) )
    GUISetBkColor ( 0xABCDEF )
    _WinAPI_SetLayeredWindowAttributes($hgui, 0xABCDEF, 255)
    GUISetState ( @SW_SHOW )

    [/autoit] [autoit][/autoit] [autoit]

    $hwnd=_GDIPlus_GraphicsCreateFromHWND ( $hgui )

    [/autoit] [autoit][/autoit] [autoit]

    $schwarz=_GDIPlus_PenCreate ( 0xFF000000, 500, 2 )

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_GraphicsDrawEllipse ( $hwnd, @DesktopWidth/2, @DesktopHeight/2-100, 50, 50, $schwarz )

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

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

    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_PenDispose ( $schwarz )
    _GDIPlus_GraphicsDispose ( $hwnd )
    _GDIPlus_Shutdown()

    [/autoit] [autoit][/autoit] [autoit]

    Func _ende()
    Exit
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _WinAPI_SetLayeredWindowAttributes($hwnd, $i_transcolor, $Transparency = 255, $dwFlages = 0x03, $isColorRef = False)
    ; progandy
    If $dwFlages = Default Or $dwFlages = "" Or $dwFlages < 0 Then $dwFlages = 0x03
    If Not $isColorRef Then
    $i_transcolor = Hex(String($i_transcolor), 6)
    $i_transcolor = Execute('0x00' & StringMid($i_transcolor, 5, 2) & StringMid($i_transcolor, 3, 2) & StringMid($i_transcolor, 1, 2))
    EndIf
    Local $Ret = DllCall("user32.dll", "int", "SetLayeredWindowAttributes", "hwnd", $hwnd, "long", $i_transcolor, "byte", $Transparency, "long", $dwFlages)
    Select
    Case @error
    Return SetError(@error, 0, 0)
    Case $Ret[0] = 0
    Return SetError(4, _WinAPI_GetLastError(), 0)
    Case Else
    Return 1
    EndSelect
    EndFunc ;==>_WinAPI_SetLayeredWindowAttributes

    [/autoit]

    Vieleicht kannst du was mit anfangen?

  • Das geht super ^^ Nur wie bekomm ich es hin, dass nicht die GUI sonder nur die Ellipse unsichtbar wird?

    Zitat

    [Heute, 11:39] Raupi: Soll ich es dir machen?
    [Heute, 11:47] BugFix: "Soll ich es dir machen? " - also Raupi !! bitte nicht so öffentlich :rofl:

    Zitat

    [Heute, 11:51] BugFix: und ich werde es mir jetzt machen - das Mittagessen :P

    AMsg UDF v1.00.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%
    OwnStyle UDF Version 1.10.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%

  • Bei WinsetlayeredAttributes die Farbe der Ellipse angeben..

    Spoiler anzeigen
    [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

    HotKeySet ( "!a", "_ende" )

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_Startup()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $hgui = GUICreate ( "MyGUI", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP, BitOR ( $WS_EX_LAYERED, $WS_EX_TOPMOST ) )
    GUISetBkColor ( 0xABCDEF )
    _WinAPI_SetLayeredWindowAttributes($hgui, 0xFF000000, 255)
    GUISetState ( @SW_SHOW )

    [/autoit] [autoit][/autoit] [autoit]

    $hwnd=_GDIPlus_GraphicsCreateFromHWND ( $hgui )

    [/autoit] [autoit][/autoit] [autoit]

    $schwarz=_GDIPlus_PenCreate ( 0xFF000000, 500, 2 )

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_GraphicsDrawEllipse ( $hwnd, @DesktopWidth/2, @DesktopHeight/2-100, 50, 50, $schwarz )

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

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

    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_PenDispose ( $schwarz )
    _GDIPlus_GraphicsDispose ( $hwnd )
    _GDIPlus_Shutdown()

    [/autoit] [autoit][/autoit] [autoit]

    Func _ende()
    Exit
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _WinAPI_SetLayeredWindowAttributes($hwnd, $i_transcolor, $Transparency = 255, $dwFlages = 0x03, $isColorRef = False)
    ; progandy
    If $dwFlages = Default Or $dwFlages = "" Or $dwFlages < 0 Then $dwFlages = 0x03
    If Not $isColorRef Then
    $i_transcolor = Hex(String($i_transcolor), 6)
    $i_transcolor = Execute('0x00' & StringMid($i_transcolor, 5, 2) & StringMid($i_transcolor, 3, 2) & StringMid($i_transcolor, 1, 2))
    EndIf
    Local $Ret = DllCall("user32.dll", "int", "SetLayeredWindowAttributes", "hwnd", $hwnd, "long", $i_transcolor, "byte", $Transparency, "long", $dwFlages)
    Select
    Case @error
    Return SetError(@error, 0, 0)
    Case $Ret[0] = 0
    Return SetError(4, _WinAPI_GetLastError(), 0)
    Case Else
    Return 1
    EndSelect
    EndFunc ;==>_WinAPI_SetLayeredWindowAttributes

    [/autoit]
  • Dann passiert eigentlich nur, dass der Hintergrund von der GUi sichtbar wird, sonst nichts...

    Zitat

    [Heute, 11:39] Raupi: Soll ich es dir machen?
    [Heute, 11:47] BugFix: "Soll ich es dir machen? " - also Raupi !! bitte nicht so öffentlich :rofl:

    Zitat

    [Heute, 11:51] BugFix: und ich werde es mir jetzt machen - das Mittagessen :P

    AMsg UDF v1.00.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%
    OwnStyle UDF Version 1.10.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%

  • Weiß nich, wer von uns ne Brille braucht :P Bei mir ist auf der Gui dann noch eine durchsichtige Ellipse... wolltest du das nich so?

    Dabei muss man anmerken, das SetLayeredAttributes nicht funktioniert, wenn die Farbe die man transparent machen will >fast< identisch mit der Bk-Color der Gui ist..

  • Weiß nich, wer von uns ne Brille braucht :P Bei mir ist auf der Gui dann noch eine durchsichtige Ellipse... wolltest du das nich so?

    Dabei muss man anmerken, das SetLayeredAttributes nicht funktioniert, wenn die Farbe die man transparent machen will >fast< identisch mit der Bk-Color der Gui ist..

    Also bei mir ist das auch nicht so wie ers haben will O.o

    Ich guck ma ob ichs noch basteln kann...

  • Er hat gesagt: "Das geht super ^^ Nur wie bekomm ich es hin, dass nicht die GUI sonder nur die Ellipse unsichtbar wird?"
    Also was ist falsch? O.o

  • Bei deiner Methode is garnichts unsichtbar ^^

    Weil du den Befehl "_WinAPI_SetLayeredWindowAttributes" nach der Ellipse setzen musst ^^

    Zitat

    [Heute, 11:39] Raupi: Soll ich es dir machen?
    [Heute, 11:47] BugFix: "Soll ich es dir machen? " - also Raupi !! bitte nicht so öffentlich :rofl:

    Zitat

    [Heute, 11:51] BugFix: und ich werde es mir jetzt machen - das Mittagessen :P

    AMsg UDF v1.00.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%
    OwnStyle UDF Version 1.10.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%

  • Da sagt mein Pc was anderes...:
    Edit Greek: Asu, dachte es wäre ne normale Ellipse gemeint :D

    Bei deiner Methode is garnichts unsichtbar ^^

    Weil du den Befehl "_WinAPI_SetLayeredWindowAttributes" nach der Ellipse setzen musst ^^

    Aber trotzdem ist da nicht "nix" transparent ;P Naja und wenn H2112 GDI+ lernen will, dann kann er doch einfach aus der Ellipse nen elyptischen Kreis machen... n paar Herausforderungen muss man schon noch habn! ;)

    [Blockierte Grafik: http://img3.imagebanana.com/img/l47zcxg9/Ellipse.gif]

    2 Mal editiert, zuletzt von ChaosKeks (21. April 2009 um 19:45)

  • Bei mir ist die Schwarz O.o

    Und die Funktion _WinAPI_SetLayeredWindowAttributes ignoriert auch irgendwie die Farbe bei mir, wenn ich z.B. so mache

    Spoiler anzeigen
    [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

    HotKeySet ( "!a", "_ende" )

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_Startup()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $hgui = GUICreate ( "MyGUI", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP, BitOR ( $WS_EX_LAYERED, $WS_EX_TOPMOST ) )
    GUISetBkColor ( 0xABCDEF )
    _WinAPI_SetLayeredWindowAttributes($hgui, 0xFF000000, 200)
    GUISetState ( @SW_SHOW )

    [/autoit] [autoit][/autoit] [autoit]

    $hwnd=_GDIPlus_GraphicsCreateFromHWND ( $hgui )

    [/autoit] [autoit][/autoit] [autoit]

    $schwarz=_GDIPlus_PenCreate ( 0xFF000000, 500, 2 )

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_GraphicsDrawEllipse ( $hwnd, @DesktopWidth/2, @DesktopHeight/2-100, 50, 50, $schwarz )

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

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

    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_PenDispose ( $schwarz )
    _GDIPlus_GraphicsDispose ( $hwnd )
    _GDIPlus_Shutdown()

    [/autoit] [autoit][/autoit] [autoit]

    Func _ende()
    Exit
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _WinAPI_SetLayeredWindowAttributes($hwnd, $i_transcolor, $Transparency = 255, $dwFlages = 0x03, $isColorRef = False)
    ; progandy
    If $dwFlages = Default Or $dwFlages = "" Or $dwFlages < 0 Then $dwFlages = 0x03
    If Not $isColorRef Then
    $i_transcolor = Hex(String($i_transcolor), 6)
    $i_transcolor = Execute('0x00' & StringMid($i_transcolor, 5, 2) & StringMid($i_transcolor, 3, 2) & StringMid($i_transcolor, 1, 2))
    EndIf
    Local $Ret = DllCall("user32.dll", "int", "SetLayeredWindowAttributes", "hwnd", $hwnd, "long", $i_transcolor, "byte", $Transparency, "long", $dwFlages)
    Select
    Case @error
    Return SetError(@error, 0, 0)
    Case $Ret[0] = 0
    Return SetError(4, _WinAPI_GetLastError(), 0)
    Case Else
    Return 1
    EndSelect
    EndFunc ;==>_WinAPI_SetLayeredWindowAttributes

    [/autoit]

    Müsste ja eigentlich nur die Schwarze Farbe transparenter werden, aber das ganze GUI wird transparent.

    Einmal editiert, zuletzt von Greek (21. April 2009 um 20:20)

  • Hier hab ich noch was von Martin was Funktioniert:

    Spoiler anzeigen
    [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

    $gui = GUICreate("a",1000,800,100,100,-1,$WS_EX_LAYERED);can be $WS_POPUP

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()
    _WinAPI_SetLayeredWindowAttributes($gui, 0xABCDEF, 255)
    $g1 = GUICtrlCreateGraphic(0,0,500,500)
    GUICtrlSetBkColor(-1,0xFFFFFF)
    GUICtrlSetGraphic(-1,$GUI_GR_COLOR,0xABCDEF,0xABCDEF)
    GUICtrlSetGraphic(-1, $GUI_GR_ELLIPSE, 50, 50, 200, 330, 270)
    GUICtrlSetGraphic(-1, $GUI_GR_REFRESH)
    sleep(7000)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _WinAPI_SetLayeredWindowAttributes($hwnd, $i_transcolor, $Transparency = 255, $dwFlages = 0x03, $isColorRef = False)
    ; progandy
    If $dwFlages = Default Or $dwFlages = "" Or $dwFlages < 0 Then $dwFlages = 0x03
    If Not $isColorRef Then
    $i_transcolor = Hex(String($i_transcolor), 6)
    $i_transcolor = Execute('0x00' & StringMid($i_transcolor, 5, 2) & StringMid($i_transcolor, 3, 2) & StringMid($i_transcolor, 1, 2))
    EndIf
    Local $Ret = DllCall("user32.dll", "int", "SetLayeredWindowAttributes", "hwnd", $hwnd, "long", $i_transcolor, "byte", $Transparency, "long", $dwFlages)
    Select
    Case @error
    Return SetError(@error, 0, 0)
    Case $Ret[0] = 0
    Return SetError(4, _WinAPI_GetLastError(), 0)
    Case Else
    Return 1
    EndSelect
    EndFunc ;==>_WinAPI_SetLayeredWindowAttributes

    [/autoit]
  • Ich habs von Greek genommen und das ging ja schonmal gut.
    Aber wie ichs umgeändert hab, hat das ganze nicht mehr gefunzt 8|


    Hier das Script:

    Spoiler anzeigen
    [autoit]

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

    [/autoit] [autoit][/autoit] [autoit]

    HotKeySet("{ESC}", "_Exit")

    [/autoit] [autoit][/autoit] [autoit]

    $my_gui = GUICreate("MyGUI", @DesktopWidth, @DesktopHeight, 0, 0, 0x80000000, BitOR(0x00000080, 0x00000008))
    GUISetBkColor(0x000000, $my_gui)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $g1 = GUICtrlCreateGraphic(0,0,500,500)
    GUICtrlSetBkColor($g1, 0x000000)
    GUICtrlSetGraphic($g1, $GUI_GR_COLOR,0xABCDEF, 0xABCDEF)
    GUICtrlSetGraphic($g1, $GUI_GR_ELLIPSE, @DesktopWidth/16, @DesktopHeight/8, @DesktopWidth/1.15, @DesktopHeight/1.30)
    GUICtrlSetGraphic($g1, $GUI_GR_REFRESH)

    [/autoit] [autoit][/autoit] [autoit]

    _WinAPI_SetLayeredWindowAttributes($my_gui, 0xABCDEF, 255)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep (100)
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _WinAPI_SetLayeredWindowAttributes($hwnd, $i_transcolor, $Transparency = 255, $dwFlages = 0x03, $isColorRef = False)
    ; progandy
    If $dwFlages = Default Or $dwFlages = "" Or $dwFlages < 0 Then $dwFlages = 0x03
    If Not $isColorRef Then
    $i_transcolor = Hex(String($i_transcolor), 6)
    $i_transcolor = Execute('0x00' & StringMid($i_transcolor, 5, 2) & StringMid($i_transcolor, 3, 2) & StringMid($i_transcolor, 1, 2))
    EndIf
    Local $Ret = DllCall("user32.dll", "int", "SetLayeredWindowAttributes", "hwnd", $hwnd, "long", $i_transcolor, "byte", $Transparency, "long", $dwFlages)
    Select
    Case @error
    Return SetError(@error, 0, 0)
    Case $Ret[0] = 0
    Return SetError(4, _WinAPI_GetLastError(), 0)
    Case Else
    Return 1
    EndSelect
    EndFunc ;==>_WinAPI_SetLayeredWindowAttributes

    [/autoit] [autoit][/autoit] [autoit]

    Func _Exit()
    Exit
    EndFunc

    [/autoit]
    Zitat

    [Heute, 11:39] Raupi: Soll ich es dir machen?
    [Heute, 11:47] BugFix: "Soll ich es dir machen? " - also Raupi !! bitte nicht so öffentlich :rofl:

    Zitat

    [Heute, 11:51] BugFix: und ich werde es mir jetzt machen - das Mittagessen :P

    AMsg UDF v1.00.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%
    OwnStyle UDF Version 1.10.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%