Edit transparent

  • Hallo, ich hab ein script wo die chackbox transparent ist (von Greenhorn) aber ich bruache das für ein Editfeld, kann mir jemadn sagen wie ddas geht?

    Spoiler anzeigen
    [autoit]

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

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

    ; Dies ist der erste Streich ...
    GUIRegisterMsg($WM_CTLCOLORSTATIC, 'WM_CTLCOLORSTATIC')

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

    $hWndMain = GUICreate("My CheckBox Button with Transparency", 300, 200, _
    -1, -1, _
    $WS_OVERLAPPEDWINDOW)

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

    GUISetBkColor(0x00ff00)

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

    $pic = GUICtrlCreatePic(@SystemDir & '\oobe\images\wpaback.jpg', 0, 0, 300, 200)
    GUICtrlSetState(-1, $GUI_DISABLE)

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

    $btnCheckBox = GUICtrlCreateCheckbox('Checkbox', 100, 90, 100, 20)
    ; ... und der zweite folgt sogleich. ;)
    DllCall('UxTheme.dll', 'int', 'SetWindowTheme', 'hwnd', GUICtrlGetHandle(-1), 'wstr', ' ', 'wstr', ' ')

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

    $btnPushButton = GUICtrlCreateButton('PushButton', 110, 150, 80, 20)

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

    GUISetState()

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

    While True

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

    Switch GUIGetMsg()
    Case - 3
    Exit
    EndSwitch

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

    WEnd

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

    ;========================================================================================
    ; WM_CTLCOLORSTATIC ($hDC, $hCtrl)
    ;========================================================================================
    Func WM_CTLCOLORSTATIC($hWnd, $Msg, $wParam, $lParam)

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

    Local $hDC = $wParam

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

    SetBkMode($hDC, $TRANSPARENT)
    Return _WinAPI_GetStockObject(5) ; 5 = NULL_BRUSH/HOLLOW_BRUSH

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

    EndFunc ;==>WM_CTLCOLORSTATIC

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

    ;========================================================================================
    ; Func SetBkMode ()
    ;========================================================================================
    Func SetBkMode($hDC, $flag = 0)

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

    If ($flag < 0 Or $flag > 1) Then Return SetError(1)

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

    DllCall('gdi32.dll', 'int', 'SetBkMode', _
    'hwnd', $hDC, _ ; handle to Decive Context
    'int', $flag) ; $flag: 1 = TRANSPARENT, 0 = OPAQUE

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

    EndFunc ;==>SetBkMode

    [/autoit]

    mfg. Jam00

    • Offizieller Beitrag

    :D OK, dann schreibs einfach mit rein. Denn ich probier nicht jeden Code der hier steht.
    Rein formal ist das Vorgehen identisch, hab mal kurz nachgelesen - soweit ich das verstanden hab, ist für Editfelder die Definition von HBRUSH erforderlich um Transparenz zu erzeugen. Mußt du mal selber in diversen Foren stöbern.

  • Also ich hab es so Probiert:

    Spoiler anzeigen
    [autoit]

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

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

    ; Dies ist der erste Streich ...
    GUIRegisterMsg($WM_CTLCOLORSTATIC, 'WM_CTLCOLORSTATIC')

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

    $hWndMain = GUICreate("My CheckBox Button with Transparency", 300, 200,-1, -1,$WS_OVERLAPPEDWINDOW)
    GUISetBkColor(0x00ff00)

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

    $pic = GUICtrlCreatePic(@SystemDir & '\oobe\images\wpaback.jpg', 0, 0, 300, 200)
    GUICtrlSetState(-1, $GUI_DISABLE)

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

    $btnCheckBox = GUICtrlCreateEdit("Edit1", 100, 90, 100, 50)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    ; ... und der zweite folgt sogleich. ;)
    DllCall('UxTheme.dll', 'int', 'SetWindowTheme', 'hwnd', GUICtrlGetHandle(-1), 'wstr', ' ', 'wstr', ' ')

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

    GUISetState()

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

    While True

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

    Switch GUIGetMsg()
    Case - 3
    Exit
    EndSwitch

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

    WEnd
    Func WM_CTLCOLORSTATIC($hWnd, $Msg, $wParam, $lParam)

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

    Local $hDC = $wParam

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

    SetBkMode($hDC, $TRANSPARENT)
    Return _WinAPI_GetStockObject(5) ; 5 = NULL_BRUSH/HOLLOW_BRUSH

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

    EndFunc ;==>WM_CTLCOLORSTATIC

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

    Func SetBkMode($hDC, $flag = 0)

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

    If ($flag < 0 Or $flag > 1) Then Return SetError(1)

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

    DllCall('gdi32.dll', 'int', 'SetBkMode', _
    'hwnd', $hDC, _ ; handle to Decive Context
    'int', $flag) ; $flag: 1 = TRANSPARENT, 0 = OPAQUE

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

    EndFunc ;==>SetBkMode

    [/autoit]

    Eine Definizion, kanst du das genauer erklären?

    mfg. Jam00