Button auf Transparentem GUI

  • Hi,

    ich wollte mal wissen, wie man einen Button auf einem Transparentem GUI sichtbar machen kann.
    Denn wenn ich den Button wiefolgt erstelle, sieht man ihn nicht aber er ist aktiv.

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>

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

    $GUI = GUICreate("Button auf Transparentem GUI", 400, 400, -1, -1, -1, $WS_EX_LAYERED)
    $Button = GUICtrlCreateButton("Test", 10, 10, 100)
    GUISetState(@SW_SHOW)

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

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

    [/autoit]

    Ich hoffe mir kann jemand helfen.

    Einmal editiert, zuletzt von morfi93 (30. Juni 2008 um 20:44)

  • Danke für deine Hilfe,
    aber diese Funktion von Xenobiologist kenn ich schon.

    Ich wollte eigentlich nur wissen, ob es irgendwie möglich ist das man den Button sehen kann auch wenn das GUI auf Transparent gestellt wurde.

    Hoffentlich funktioniert das überhaupt.

  • Hey, danke für deine schnelle Antwort.
    Dürfte ich wissen was ich für TransparentColor eingeben muss?
    eigentlich müsste das ja egal sein, denn es wird ja eh transparent.
    Ergibt für mich eigentlich gar keinen Sinn -.-

    Und eine Frage hätte ich noch.
    Gibt es vielleicht noch eine einfachere Version?
    Denn ich hasse es wenn ich mir einen Code von jemanden kopiere und dann kenn ich mich gar nicht aus.

    Aber trotzdem THX an dich!!

  • Du brauchst die FUnktion
    _WinAPI_SetLayeredWindowAttributes aus meinem Link. Beschreibung:

    Spoiler anzeigen
    [autoit]

    ;===============================================================================
    ;
    ; Function Name: _WinAPI_SetLayeredWindowAttributes
    ; Description:: Sets Layered Window Attributes:) See MSDN for more informaion
    ; Parameter(s):
    ; $hwnd - Handle of GUI to work on
    ; $i_transcolor - Transparent color
    ; $Transparency - Set Transparancy of GUI
    ; $isColorRef - If True, $i_transcolor is a COLORREF( 0x00bbggrr ), else an RGB-Color
    ; Requirement(s): Layered Windows
    ; Return Value(s): Success: 1
    ; Error: 0
    ; @error: 1 to 3 - Error from DllCall
    ; @error: 4 - Function did not succeed - use
    ; _WinAPI_GetLastErrorMessage or _WinAPI_GetLastError to get more information
    ; Author(s): Prog@ndy
    ;
    ; Link : @@MsdnLink@@ SetLayeredWindowAttributes
    ; Example : Yes
    ;===============================================================================
    ;

    [/autoit]


    Mehr info: http://msdn.microsoft.com/en-us/library/ms633540(VS.85).aspx
    Damit setzt du die Farbe, die Transparent werden soll. Wenn die GUI-Hintergrundfarbe die gleiche ist, dann wird das Fenster transparent :)

  • Der progandy mal wieder echt super gemacht. Es lohnt sich wirklich sich die einzelnen Punke von Windows wie z.B. die Win API anzuschauen.

  • OK, dann werde ich mal versuchen es zu verstehen :S
    Aber ich hoffe das bekomme ich hin ^^

    THX nochmal an alle