GUI Hintergrund transparent für Ebay_Widget

  • Ich versuche krampfhaft den Hintergrund eines GUI transparent einzustellen. Aber ich bekomme es mit folgendem Versuch nicht hin.

    [autoit]

    #include <GUIConstants.au3>

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

    $Gui1 = GUICreate("Fenster1",200,60,300,200,-1,$WS_EX_TRANSPARENT)
    $Input = GUICtrlCreateInput("",10,10,180,20)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]

    Hat jemand eine Idee ?

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

    2 Mal editiert, zuletzt von Micha_he (3. Februar 2008 um 13:44)

  • Genau, ich möchte ein GUI erzeugen, wovon später nur ein Picture-Control und ein Input-Control zu sehen ist. Das Systemmenue bekomme ich ja später mit $WS_POPUP weg, nur wie bekomme ich es hin, das ich durch das GUI hindurch, den Desktop sehen kann ?

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Vielleicht eine Idee,... das Bild ist ein transparente GIF und das Inputfeld kann darauf liegen. Mal sehen ob ich nach der BuLi das Picture-Control durchsichtig bekomme. Ich dachte dann sehe ich wieder nur den grauen Hintergrund des GUI !?

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Wie folgt geht es (habe ich aus einigen Beispiele des englischen Forums herausgelesen):

    [autoit]

    #include <GUIConstants.au3>

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

    $gui = GUICreate("Ebay_Suche",110,70, 318, 213,-1,$WS_EX_LAYERED)
    $bild_id = GUICtrlCreatePic("Ebay_Widget.gif", 0, 0, 110,70)
    $suchtext_id = GUICtrlCreateInput("", 32, 40, 73, 21)
    GUISetState(@SW_SHOW)

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

    GUICtrlSetBKColor($bild_id,$GUI_BKCOLOR_TRANSPARENT)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $suchtext_id
    $suchtext = StringReplace(GUICtrlRead($suchtext_id)," ","+")
    $suchtext = StringReplace($suchtext,"Ä","%C4",0,1)
    $suchtext = StringReplace($suchtext,"ä","%E4",0,1)
    $suchtext = StringReplace($suchtext,"Ö","%D6",0,1)
    $suchtext = StringReplace($suchtext,"ö","%F6",0,1)
    $suchtext = StringReplace($suchtext,"Ü","%DC",0,1)
    $suchtext = StringReplace($suchtext,"ü","%FC",0,1)
    $suchtext = StringReplace($suchtext,"ß","%DF",0,1)
    ShellExecute ("http://search.ebay.de/search/search.dll?from=R40&_trksid=m37&satitle=" & $suchtext & "&category0=")
    GUICtrlSetData($suchtext_id,"")
    EndSwitch
    WEnd

    [/autoit]

    Jetzt muss ich das Widget noch verschiebbar machen und dann kann ich die Titelleiste ausblenden...

    Hier noch das GIF, falls es sich jemand ansehen möchte

    Bilder

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Mit Funktionen der gdi32.dll geht das auch, Abr nur, solange man keine Titelleiste braucht:

    Spoiler anzeigen
    [autoit]

    ;Tanks to Mega for SetWindowRgn
    #include <GUIConstants.au3>
    HotKeySet("{ESC}", "_end")

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

    $gui = GUICreate("GUI", 400, 200, 100, 100, $WS_POPUP, $WS_EX_TOPMOST+$WS_EX_ToolWINDOW)
    GUISetBkColor(0x0000FF)

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

    GUICtrlCreateButton("btn",10,10,100,20)
    $rgn1 = _CreateCTRLRect(10,10,100,20)

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

    GUICtrlCreateEdit("Text",10,40,100,100)
    $rgn2 = _CreateCTRLRect(10,40,100,100)

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

    $rgn = _CombineRgns($rgn1,$rgn2)
    _SetGUIRgn($gui,$rgn)
    ;_GUICreateInvRect($gui, 2, 2, 6, 6)
    GUISetState()

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

    While 1
    Sleep(10)

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

    WEnd

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

    Func _CreateCTRLRect($x,$y,$w,$h)
    Local $ret = DllCall("gdi32.dll", "long", "CreateRectRgn", "long", $x, "long", $y, "long", $w+$x, "long", $h+$y)
    Return $ret[0]
    EndFunc

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

    Func _SetGUIRgn($hwnd, ByRef $rgn)
    DllCall("user32.dll", "long", "SetWindowRgn", "hwnd", $hwnd, "long", $rgn, "int", 1)
    EndFunc

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

    Func _CombineRgns(ByRef $rgn1, ByRef $rgn2)
    DllCall("gdi32.dll", "long", "CombineRgn", "long", $rgn1, "long", $rgn1, "long", $rgn2, "int", 2)
    Return $rgn1
    EndFunc

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

    Func _end()
    Exit(0)
    EndFunc

    [/autoit]

    //Edit: Deins geht verschiebbar so (Über Context-Menu)

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <Misc.au3>

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

    $gui = GUICreate("Ebay_Suche",110,70, 318, 213,$WS_POPUP,$WS_EX_LAYERED+$WS_EX_TOOLWINDOW+$WS_EX_TOPMOST)
    $bild_id = GUICtrlCreatePic("Ebay_Widget.gif", 0, 0, 110,70)
    $con = GUICtrlCreateContextMenu($bild_id)
    $move = GUICtrlCreateMenuItem("Bewegen",$con)
    $exit = GUICtrlCreateMenuItem("Beenden",$con)
    $suchtext_id = GUICtrlCreateInput("", 32, 40, 73, 21)
    GUISetState(@SW_SHOW)

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

    GUICtrlSetBKColor($bild_id,$GUI_BKCOLOR_TRANSPARENT)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE, $exit
    Exit
    Case $move
    Do
    $mouse = MouseGetPos()
    WinMove($gui,"",$mouse[0],$mouse[1])
    Sleep(10)
    Until _IsPressed(01)
    Case $suchtext_id
    If Not _IsPressed("0D") Then ContinueCase
    $suchtext = StringReplace(GUICtrlRead($suchtext_id)," ","+")
    $suchtext = StringReplace($suchtext,"Ä","%C4",0,1)
    $suchtext = StringReplace($suchtext,"ä","%E4",0,1)
    $suchtext = StringReplace($suchtext,"Ö","%D6",0,1)
    $suchtext = StringReplace($suchtext,"ö","%F6",0,1)
    $suchtext = StringReplace($suchtext,"Ü","%DC",0,1)
    $suchtext = StringReplace($suchtext,"ü","%FC",0,1)
    $suchtext = StringReplace($suchtext,"ß","%DF",0,1)
    ShellExecute ("http://search.ebay.de/search/search.dll?from=R40&_trksid=m37&satitle=" & $suchtext & "&category0=")
    GUICtrlSetData($suchtext_id,"")
    EndSwitch
    WEnd

    [/autoit]


    //Edit: Textfeld wird nur nach druck auf Enter gesendet!

    2 Mal editiert, zuletzt von progandy (2. Februar 2008 um 19:20)

  • Fertig ist das Ebay_Widget (notwendiges Bild ist in #6):

    [autoit]

    #NoTrayIcon
    #include <GUIConstants.au3>

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

    ; INI-Datei definieren Priorität: Userprofile vor lokaler Datei
    If FileExists(@userprofiledir & "\Ebay_Widget.ini") then
    $inifile = @userprofiledir & "\Ebay_Widget.ini"
    else
    $inifile = @scriptdir & "\Ebay_Widget.ini"
    endif

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

    ; GUI erzeugen mit Contextmenue "Beenden"
    Opt("GUIOnEventMode", 1)
    $gui = GUICreate("Ebay_Widget",110,70, 318, 213,$WS_POPUP,BitOr($WS_EX_LAYERED,$WS_EX_TOOLWINDOW))
    GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, "_PrimeDown")
    GUISetOnEvent($GUI_EVENT_CLOSE,"_Ende")
    $bild_id = GUICtrlCreatePic("Ebay_Widget.gif", 0, 0, 110,70)
    $CMenue = GUICtrlCreateContextMenu ($bild_id)
    $CMenueEnde = GUICtrlCreateMenuitem ("Beenden",$CMenue,0)
    GUICtrlSetOnEvent ($CMenueEnde, "_Ende")
    $suchtext_id = GUICtrlCreateInput("", 32, 40, 73, 21)
    GUICtrlSetOnEvent($suchtext_id,"_Suche")
    GUISetState(@SW_SHOW)

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

    ; alte Fensterposition laden und GUI verschieben
    if $inifile <> "" then
    $WinXPos = IniRead($inifile,"Startwerte","WinXPos","")
    $WinYPos = IniRead($inifile,"Startwerte","WinYPos","")
    If $WinXPos <> "" And $WinYPos <> "" then WinMove("Ebay_Widget","",$WinXPos,$WinYPos)
    endif

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

    ; warten....
    While 1
    Sleep(100)
    WEnd

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

    ; eingegebenen Begriff bei Ebay suchen
    Func _Suche()
    $suchtext = GUICtrlRead($suchtext_id)
    $suchtext = StringReplace($suchtext," ","+")
    $suchtext = StringReplace($suchtext,"Ä","%C4",0,1)
    $suchtext = StringReplace($suchtext,"ä","%E4",0,1)
    $suchtext = StringReplace($suchtext,"Ö","%D6",0,1)
    $suchtext = StringReplace($suchtext,"ö","%F6",0,1)
    $suchtext = StringReplace($suchtext,"Ü","%DC",0,1)
    $suchtext = StringReplace($suchtext,"ü","%FC",0,1)
    $suchtext = StringReplace($suchtext,"ß","%DF",0,1)
    ShellExecute ("http://search.ebay.de/search/search.dll?from=R40&_trksid=m37&satitle=" & $suchtext & "&category0=")
    GUICtrlSetData($suchtext_id,"")
    EndFunc

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

    ; Danke für diese Funktion um das rahmenlose Fenster zu verschieben
    Func _PrimeDown()
    Local $DifX, $DifY, $MouseData = GUIGetCursorInfo(@GUI_WinHandle)
    Local $WinPos = WinGetPos(@GUI_WinHandle)
    Local $MPos = MouseGetPos()
    $DifX = $MPos[0] - $WinPos[0]
    $DifY = $MPos[1] - $WinPos[1]
    While $MouseData[2]
    $MPos = MouseGetPos()
    $WinPos = WinGetPos(@GUI_WinHandle)
    If ($WinPos[0] <> ($MPos[0] - $DifX)) Or ($WinPos[1] <> ($MPos[1] - $DifY)) Then
    WinMove(@GUI_WinHandle, '', $MPos[0] - $DifX, $MPos[1] - $DifY)
    EndIf
    Sleep(15)
    $MouseData = GUIGetCursorInfo(@GUI_WinHandle)
    WEnd
    GUICtrlSetState($suchtext_id,$GUI_FOCUS)
    EndFunc

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

    ; Fensterposition merken und Programm beenden
    Func _Ende()
    $iniid=fileopen($inifile,1)
    if $iniid = -1 then $inifile = @userprofiledir & "\Ebay_Widget.ini"
    fileclose($iniid)
    IniDelete($inifile,"Startwerte")
    $WinPos = WinGetPos("Ebay_Widget")
    IniWrite($inifile,"Startwerte","WinXPos",$WinPos[0])
    IniWrite($inifile,"Startwerte","WinYPos",$WinPos[1])
    Exit
    EndFunc

    [/autoit]

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Hi!
    So wird auch noch der Cursor verändert, wenn man die GUI bewegt:

    Spoiler anzeigen
    [autoit]

    ; Danke für diese Funktion um das rahmenlose Fenster zu verschieben
    Func _PrimeDown()
    Local $DifX, $DifY, $MouseData = GUIGetCursorInfo(@GUI_WinHandle)
    Local $WinPos = WinGetPos(@GUI_WinHandle)
    Local $MPos = MouseGetPos()
    $DifX = $MPos[0] - $WinPos[0]
    $DifY = $MPos[1] - $WinPos[1]
    Do
    Sleep(15)
    $MPos = MouseGetPos()
    $MouseData = GUIGetCursorInfo(@GUI_WinHandle)
    Until ($WinPos[0] <> ($MPos[0] - $DifX)) Or ($WinPos[1] <> ($MPos[1] - $DifY)) Or (Not $MouseData[2])
    GUICtrlSetCursor($bild_id,9)
    While $MouseData[2]
    $MPos = MouseGetPos()
    $WinPos = WinGetPos(@GUI_WinHandle)
    If ($WinPos[0] <> ($MPos[0] - $DifX)) Or ($WinPos[1] <> ($MPos[1] - $DifY)) Then
    WinMove(@GUI_WinHandle, '', $MPos[0] - $DifX, $MPos[1] - $DifY)
    EndIf
    Sleep(15)
    $MouseData = GUIGetCursorInfo(@GUI_WinHandle)
    WEnd
    GUICtrlSetCursor($bild_id,2)
    GUICtrlSetState($suchtext_id,$GUI_FOCUS)
    EndFunc

    [/autoit]
  • Danke, habe ich gleich nochmal ersetzt. Ich wusste im ersten Moment erst einmal nicht, was sich ändern sollte. Die Autoit-Hilfe half mir dann weiter.
    Ich werde das fertige Paket mal unter Scripte veröffentlichen...

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"