Transparente Richedit

  • Hallo,
    mir gelingt es nicht, eine Richedit transparent zu machen. Habe schon mehrere Anläufe hinter mir. Hier das jetzige Script:

    Spoiler anzeigen
    [autoit]

    #include <WinAPI.au3>
    #include <GUIRichEdit.au3>

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

    $Color = 0xFFFFFF
    $Color2 = $Color + 1

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

    $GUI = GUICreate("test")
    GUISetBkColor($Color)
    GUICtrlCreatePic("test.jpg", 0, 0, 400, 400)

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

    $Size = WinGetClientSize($GUI)
    $GUI2 = GUICreate("", $Size[0], $Size[1], 0, 0, 0x80000000, 0x00080000 + 0x00000040, $GUI)
    GUISetBkColor($Color2)

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

    GUICtrlCreateEdit("Edit", 5, 5, 195, 390)
    GUICtrlSetColor(-1, 0xFF0000)
    GUICtrlSetBkColor(-1, $Color2)

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

    $RichEdit = _GUICtrlRichEdit_Create($GUI2, "RichEdit", 205, 5, 190, 390)
    _GUICtrlRichEdit_SetBkColor($RichEdit, $Color2)

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

    _WinAPI_SetLayeredWindowAttributes($GUI2, $Color2)

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

    GUISetState(@SW_SHOW, $GUI)
    GUISetState(@SW_SHOW, $GUI2)

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

    While Sleep(50)
    If GUIGetMsg() = -3 Then Exit
    WEnd

    [/autoit]

    Und das dazugehörige Bild:
    [Blockierte Grafik: http://img6.imagebanana.com/img/1y3inosb/test.jpg]

    Hoffe mir kann wer helfen =(

    Schönen Abend allerseits.

    2 Mal editiert, zuletzt von NoName (4. Mai 2011 um 14:24)

  • Drei Dinge:

    1) die Farben haben kein Alpha Kanal, d.h. Farbraum geht von 0x000000 - 0xFFFFFF
    2) die Hintergrundfarbe für Richedit ist nicht RGB, sondern BGR

    Spoiler anzeigen
    [autoit]


    #include <GuiRichEdit.au3>
    #include <WinAPI.au3>
    #include <WindowsConstants.au3>

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

    $Color_RGB = 0xABCDEF ;RGB
    $Color_BGR = 0xEFCDAB ;BGR
    $GUI = GUICreate("test")
    GUISetBkColor($Color_RGB, $GUI)
    GUICtrlCreatePic("test.jpg", 0, 0, 400, 400)

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

    $Size = WinGetClientSize($GUI)
    $GUI2 = GUICreate("SBot Manager Client", $Size[0], $Size[1], 0, 0, 0x80000000, 0x00080000 + 0x00000040, $GUI)
    GUISetBkColor($Color_RGB, $GUI2)

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

    GUICtrlCreateEdit("Edit", 5, 5, 195, 390)
    GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetBkColor(-1, $Color_RGB)

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

    $RichEdit = _GUICtrlRichEdit_Create($GUI2, "RichEdit", 205, 5, 190, 390)
    _GUICtrlRichEdit_SetBkColor($RichEdit, $Color_BGR)
    _GUICtrlRichEdit_SetCharColor($RichEdit, 0xFFFFFF)

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

    _WinAPI_SetLayeredWindowAttributes($GUI2, $Color_RGB)

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

    GUISetState(@SW_SHOW, $GUI)
    GUISetState(@SW_SHOW, $GUI2)

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

    While Sleep(50)
    If GUIGetMsg() = -3 Then Exit
    WEnd

    [/autoit]

    3) der Titel SBot Manager Client ist nicht gerade ideal, um hier Hilfe zu bekommen!

    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • Handelt sich aber um einen Manager ;)
    Das bei der Richedit BGR verwendet wird, war mir entfallen. $Color2 einfach in einen 6 stelligen Hexwert umrechnen reicht schon aus.

    Danke.