Input transparent machen

  • Das geht nicht wirklich gut. Hatte da mal so eine Bastellösung entworfen:


    Spoiler anzeigen
    [autoit]

    #cs **************************************************************************
    GUICtrlCreateInput - Transparenter Hintergrund / Hintergrundbild
    http://www.autoit.de/index.php?page…79946#post79946
    #ce **************************************************************************
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    Opt('GUIOnEventMode', 1)
    GUICreate("Quasi-Transparentes Input-Control", 300, 300)
    GUISetOnEvent(-3, '_Ende')
    GUIRegisterMsg($WM_COMMAND, 'MY_WM_NOTIFY')
    Global $hInput = GUICtrlCreateInput('', 20, 20, 260, 20, 0x200)
    GUICtrlCreatePic(@DocumentsCommonDir&'\Eigene Bilder\Beispielbilder\Sonnenuntergang.jpg', 0, 0, 300, 300, 0)
    Global $hLabel = GUICtrlCreateLabel('', 20, 20, 260, 20, 0x200, 0x00000008)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    Global $hInput2 = GUICtrlCreateInput('', 20, 80, 260, 20, 0x200)
    GUISetState()
    While 1
    Sleep(10000)
    WEnd
    Func _Copy()
    GUICtrlSetData($hLabel, ' '&GUICtrlRead($hInput))
    EndFunc
    Func _Ende()
    Exit
    EndFunc
    Func MY_WM_NOTIFY($hWnd, $msg, $wParam, $lParam)
    Local $nID = BitAND($wParam, 0x0000FFFF)
    If $nID = $hInput Then _Copy()
    EndFunc

    [/autoit]
  • Sprichst du von einer GUI? Wenn ja nimm doch ein Label. Soll es denn funktionieren wie ein normales Input, also anklicken und schreiben?

  • Wenn du keine eingaben machen möchtest reicht ein Label föllig aus texte und grösse farben etc. kannst du hier auch setzen.
    und GUICTRLSetData($dein Label, $deine Daten) geht auch

    ;)

  • so ?

    [autoit]


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

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

    $Form1 = GUICreate("Form1", 625, 443, 192, 124)
    $Input1 = GUICtrlCreateInput("Input1", 80, 96, 265, 21, BitOR($ES_AUTOHSCROLL,$ES_READONLY), 0)
    GUISetState(@SW_SHOW)

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

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

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

    EndSwitch
    WEnd

    [/autoit]
  • Oder so evtl. Damit du was ins Label schreiben kannst, musst du einmal draufklicken, wenn du nix mehr reinschreiben möchtest, einfach irgendwo anders in die GUI klicken.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>

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

    $Last = ""

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

    GUICreate("Test")
    $Input = GUICtrlCreateInput("", 10, 150, 200, 20)
    GUICtrlSetState($Input, $GUI_HIDE)
    GUICtrlSetState($Input, $GUI_DISABLE)
    $Label = GUICtrlCreateLabel("", 10, 150, 200, 15)
    GUICtrlSetBkColor($Label, 0xff0000) ; damit man das Label findet
    GUICtrlSetCursor($Label, 5)

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

    GUISetState()

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

    While 1
    $nMsg = GUIGetMsg()

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

    If GUICtrlGetState($Input) = 96 And GUICtrlRead($Input) <> $Last Then
    $Last = GUICtrlRead($Input) ; damit es nicht dauernd flackert
    GUICtrlSetData($Label, GUICtrlRead($Input))
    EndIf

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

    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $GUI_EVENT_PRIMARYDOWN
    $aCursor = GUIGetCursorInfo()
    If $aCursor[4] = $Label Then
    ; MsgBox(0, "Test", "Test")
    GUICtrlSetBkColor($Label, 0x00ff00)
    GUICtrlSetState($Input, $GUI_ENABLE)
    GUICtrlSetState($Input, $GUI_FOCUS)
    Else
    GUICtrlSetBkColor($Label, 0xff0000)
    GUICtrlSetState($Input, $GUI_DISABLE)
    EndIf
    EndSwitch
    WEnd

    [/autoit]

    Einmal editiert, zuletzt von m-obi (23. Dezember 2009 um 21:59)

  • Ich will ein INPUT und kein LABEL

    Musst ja nicht direkt so brüllen. Wie schauts mit dem hier aus:

    [autoit]

    #include <Array.au3>
    #include <Misc.au3>
    #include <_Transinput.au3>

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

    $hGUI = GUICreate("")
    GUISetBkColor(0x00FF00)
    $input = GUICtrlCreateInput("Klick mich an, und schreib los ;)",20,20,300,55)
    _TransInput_Create($input,12)

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

    GUISetState()
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case -3
    Exit
    Case $input
    ConsoleWrite("input abgesendet" & @CRLF)
    EndSwitch
    WEnd

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

    Vielleicht mach ich ja noch ne "richtige" UDF draus.