Hi!
Ich möchte mit GUICtrlCreateInput ein Eingabefeld mit einem transparentem Hintergrund, oder einem Hintergrundbild erstellen.
Gibt es eine Möglichkeit dies zu realisieren?
Vorab schon einmal vielen Dank für eure Hilfe!
GUICtrlCreateInput - Transparenter Hintergrund / Hintergrundbild
-
- [ offen ]
-
Korby -
3. März 2009 um 18:57 -
Geschlossen -
Erledigt
-
-
Ich möchte mit GUICtrlCreateInput ein Eingabefeld mit einem transparentem Hintergrund, oder einem Hintergrundbild erstellen.
Ich schätze mal, GUICtrlSetGraphic oder GUICtrlSetBkColor sind die Funktionen, die du dir näher anschauen solltest.
Gruß Ashpool
-
Ich glaube Du hast mein Problem nicht richtig verstanden.
Falls doch:
Könntest Du mir ein Beispiel zeigen, wie ich es mit diesen Befehlen lösen soll? -
Ich glaube Du hast mein Problem nicht richtig verstanden.
Dann plädiere ich für: Keine Ahnung! -
Mein Code schaut momentan so aus:
GUICtrlCreateInput("Text", 14, 129, 300, 35, default, $WS_EX_TRANSPARENT)
Damit werden schone einmal die Ränder entfernt.GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
Funktioniert jedoch nicht mit GUICtrlCreateInput.Ich möchte ganz einfach diesen (normalerweise weißen) Hintergrund entfernen.
-
-
Danke für deine Antwort Stilgar!
Das war jedoch genau die Funktion, welche ich Dir gestern über ICQ geschickt habe.
Damit wird nämlich auch die Schrift transparent, was in meinem Fall nicht gewünscht ist.Gibt es eine Möglichkeit das zu umgehen?
-
- Offizieller Beitrag
Meinst du sowas?
Spoiler anzeigen
[autoit]#include <WindowsConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <WinAPI.au3>Global $aCtrl[2]
[/autoit] [autoit][/autoit] [autoit]$gui = GUICreate("", 150, 50, -1, -1, $WS_POPUP, $WS_EX_TOPMOST)
[/autoit] [autoit][/autoit] [autoit]
$aCtrl[0] = GUICtrlCreateInput("", 0, 0, 150, 20)
$aCtrl[1] = GUICtrlCreateButton('Ende', 100, 30, 50, 20)
GUISetState(@SW_SHOW)$pos = WinGetPos($gui)
[/autoit] [autoit][/autoit] [autoit]
_GuiHole($gui, 0, 0, 150, 50)While 1
[/autoit] [autoit][/autoit] [autoit]
$msg = GUIGetMsg()
Switch $msg
Case $aCtrl[1]
ExitLoop
EndSwitch
WEndFunc _GuiHole($h_win, $i_x, $i_y, $i_sizew, $i_sizeh)
[/autoit] [autoit][/autoit] [autoit]
Local $outer_rgn, $inner_rgn, $combined_rgn
$combined_rgn = _WinAPI_CreateRectRgn(0, 0, 0, 0)
_WinAPI_DeleteObject($outer_rgn)
_WinAPI_DeleteObject($inner_rgn)
_AddCtrlRegion($combined_rgn, $aCtrl)
_WinAPI_SetWindowRgn($h_win, $combined_rgn)
EndFunc ;==>_GuiHoleFunc _AddCtrlRegion($full_rgn, $ctrl_id)
[/autoit]
Local $ctrl_pos, $ctrl_rgn
If IsArray($ctrl_id) Then
For $i = 0 To UBound($ctrl_id) -1
$ctrl_pos = ControlGetPos($gui, "", $ctrl_id[$i])
$ctrl_rgn = _WinAPI_CreateRectRgn($ctrl_pos[0], $ctrl_pos[1], $ctrl_pos[0] + $ctrl_pos[2], $ctrl_pos[1] + $ctrl_pos[3])
_WinAPI_CombineRgn($full_rgn, $full_rgn, $ctrl_rgn, $RGN_OR)
_WinAPI_DeleteObject($ctrl_rgn)
Next
Else
$ctrl_pos = ControlGetPos($gui, "", $ctrl_id)
$ctrl_rgn = _WinAPI_CreateRectRgn($ctrl_pos[0], $ctrl_pos[1], $ctrl_pos[0] + $ctrl_pos[2], $ctrl_pos[1] + $ctrl_pos[3])
_WinAPI_CombineRgn($full_rgn, $full_rgn, $ctrl_rgn, $RGN_OR)
_WinAPI_DeleteObject($ctrl_rgn)
EndIf
EndFunc ;==>_AddCtrlRegion -
@Korby:
Oh - das habe ich übersehen, war da an nem anderen Rechner -
BugFix :
Leider nicht.
Ich möchte den Hintergrund des Inputfeldes entfernen, oder zumindest ein Hintergrundbild festlegen können. -
Ich hätte da eine Kompromiss-Lösung. Während des Eingebens ist das Eingabefeld zu sehen, danach nicht mehr.
Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>
Opt('GUIOnEventMode', 1)GUICreate("Quasi-Transparentes Input-Control", 300, 300)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent(-3, '_Ende')Global $hInput = GUICtrlCreateInput('', 20, 20, 260, 20, 0x200)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetOnEvent( -1, '_Copy')GUICtrlCreatePic(@DocumentsCommonDir&'\Eigene Bilder\Beispielbilder\Sonnenuntergang.jpg', 0, 0, 300, 300, 0)
[/autoit] [autoit][/autoit] [autoit]Global $hLabel = GUICtrlCreateLabel('', 20, 20, 260, 20, 0x200)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)GUISetState()
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(10000)
WEndFunc _Copy()
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData($hLabel, ' '&GUICtrlRead($hInput))
EndFuncFunc _Ende()
[/autoit]
Exit
EndFunc -
Ai, das schaut doch schonmal sehr gut aus
Obwohl ich das Skript noch ein wenig studieren muss -
So sieht's besser aus
Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>
Opt('GUIOnEventMode', 1)GUICreate("Quasi-Transparentes Input-Control", 300, 300)
[/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent(-3, '_Ende')
GUIRegisterMsg($WM_COMMAND, 'MY_WM_NOTIFY')Global $hInput = GUICtrlCreateInput('', 20, 20, 260, 20, 0x200)
[/autoit] [autoit][/autoit] [autoit]
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
[/autoit] [autoit][/autoit] [autoit]
Sleep(10000)
WEndFunc _Copy()
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetData($hLabel, ' '&GUICtrlRead($hInput))
EndFuncFunc _Ende()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFuncFunc MY_WM_NOTIFY($hWnd, $msg, $wParam, $lParam)
[/autoit]
Local $nID = BitAND($wParam, 0x0000FFFF)
If $nID = $hInput Then _Copy()
EndFunc -
Könntest Du mich vllt. einmal bei ICQ hinzufügen?
Meine Nummer steht im Profil.
Wäre Dir sehr dankbar. -
Jeder geht davon aus, dass man ICQ hat. Muss dich enttäuschen, hab ich nicht.
-
Schlimme Sache..
Aber gut ;D
Dann eben via PN