Problem mit Gui

  • Hallo,

    ich wollte eben einen Gui erstellen, welcher nicht die übliche Form hat. Dieser soll rund sein und einen transparenten Hintergrund besitzen. Dies hat so weit auch geklappt. Nun wollte ich, dass sich über das Betätigen eines Buttons rechts neben dem bereits schon vorhandenen Bild (Kreis) ein Kasten öffnet, welcher sich über ein erneutes Betätigen des Buttons wieder schließt. Dies bereitet mir einige Schwierigkeiten, da das neue Bild immer nur kurz aufleuchtet und dann wieder verschwindet. Dies geschieht auch mit einem großen Teil der Transparenz.
    Kann mir jemand sagen was ich falsch mache?

    Spoiler anzeigen
    [autoit]

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

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

    Opt('MustDeclareVars', 1)
    Opt('GUIOnEventMode', 1)

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

    GUICreate("Form1", 600, 400, -1, -1, $WS_POPUP, BitOr($WS_EX_TOOLWINDOW, $WS_EX_LAYERED))

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

    Global $btn0 = GUICtrlCreateButton('X', 410, 80, 20, 20)
    GUICtrlSetOnEvent(-1, 'End')
    Global $0 = GUICtrlCreateButton('0', 300, 80, 20, 20)
    GUICtrlSetOnEvent(-1, '_0')
    GUICtrlCreatePic(@ScriptDir & '\kreis.gif', 0, 0, 640, 400)
    GUISetState()

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

    while 1
    wend

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

    Func End()
    Exit
    EndFunc

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

    func _0()
    GUICtrlCreatePic(@ScriptDir & '\kasten.gif', 200, 0, 640, 400)
    GUISetState()
    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von descent (20. Mai 2010 um 20:23)

  • @ HopFail
    habe ich bereits versucht. Es verschwindet trotzdem kurz nach dem Erscheinen wieder.

    @ AltairKD
    Ich vermute dass du keine Grafikdateien mit dem entsprechenden Namen besitzen, weshalb du keine Anzeige erhältst.

  • Hallo Ubuntu,

    du hast recht, dass es so funktioniert. Nur geht dabei die Transparenz des Hauptfensters (Kreis) verloren. Ich erhalte damit einen weißen Hintergrund den ich nicht möchte.

    Besteht vielleicht eine andere Möglichkeit ein ausklappbaren Gui zu erzeugen, welches in der Startleiste nicht als eigenes Fenster angezeigt wird?

  • Beschreibe bitte noch mal genauer wie die Gui aussehen soll ansonsten guck dir

    [autoit]

    GUISetBkColor
    GUICtrlSetBkColor
    Winsettrans
    $WS_EX_TRANSPARENT

    [/autoit]


    an.

    mfg Ubuntu

  • autoit.de/wcf/attachment/9660/

    Der schwarze Kreis ist das "Hauptfenster". Dieses wird beim Start angezeigt. Das grüne Feld soll über einen Button, welcher sich auf dem schwarzen Kreis befindet geöffnet werden können. Auf diesem werden sich unter anderem ein Button, ein Inputfeld, ein ListView sowie weitere Bilder befinden. Alles um den schwarzen Kreis sowie die grüne Fläche herum soll transparent sein.

    Danke für den Tipp mit den Befehlen. Ich werde mir diese mal etwas genauer anschauen.

  • Glückwunsch mein 70er Post :D

    Mit GDI kenne ich mich leider nicht aus. Gibt es hierfür eine Anleitung oder ein Tutorial das man zum schnelleren Verständnis mal durcharbeiten könnte?
    Hat vllt noch jemand eine andere Idee wie man das umsetzten könnte?

  • In der Hilfe steht doch eigentlich genug drin zu den Funktionen, also einfach durcharbeiten und klein anfangen, erstmal eine Linie zeichnen, dann einen Kreis. usw. Außerdem könnte man ja auch mal die SuFu benutzen.

  • Ich habe die SuFu benutzt, jedoch waren die meisten Beiträge nicht sehr hilfreich, da dort auch nach Tutorials oder ähnlichem für GDI gefragt wurde.

    @ stayawayknight
    Ich habe nun auch einen Link zu einem Tutorial gefunden. Ob mir dieser weiterhelfen wird bzw. das Tutorial gut ist kann ich noch nicht sagen, da ich noch nicht dazu kam, dieses zu lesen. Falls es hilfreich ist, werde ich dir den Link zukommen lassen ;)

  • hi
    das tut könntest du den link posten oder mir auch schicken bitte?
    lg chris

  • Wenn ich das jetzt richtig verstanden habe, dann suchst du so was:

    Spoiler anzeigen
    [autoit]


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

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

    Opt('MustDeclareVars', 1)
    Opt('GUIOnEventMode', 1)

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

    Global $hGui = GUICreate("Form1", 600, 400, -1, -1, $WS_POPUP)
    GuiSetBkColor(0xDD7777)
    _Close()

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

    GUICtrlCreateLabel('X', 140, 50, 20, 20)
    GUICtrlSetOnEvent(-1, '_End')
    GUICtrlCreateLabel('O', 125, 50, 15, 20)
    GUICtrlSetOnEvent(-1, '_Open')
    GUICtrlCreateLabel('<-', 440, 25, 25, 20)
    GUICtrlSetOnEvent(-1, '_Close')
    GUISetState()

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

    While Sleep(200)
    WEnd

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

    Func _End()
    Exit
    EndFunc

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

    Func _Open()
    Local $hRgn1, $hRgn2
    $hRgn1 = _WinAPI_CreateRoundRectRgn(5, 30, 190 + 5, 190 + 30, 190, 190)
    $hRgn2 = _WinAPI_CreateRectRgn(120, 20, 350 + 120, 210 + 20)
    _WinAPI_CombineRgn($hRgn1, $hRgn1, $hRgn2, $RGN_OR)
    _WinAPI_SetWindowRgn($hGui, $hRgn1)
    EndFunc

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

    Func _Close()
    Local $hRgn = _WinAPI_CreateRoundRectRgn(5, 30, 190 + 5, 190 + 30, 190, 190)
    _WinAPI_SetWindowRgn($hGui, $hRgn)
    EndFunc

    [/autoit]


    Da brauchst du zum Bilder darstellen auch kein GDI.
    Lg

  • @ SchrotterCh
    Ich hab dir den Link geschickt.

    @ Ahnungslos
    Genau so etwas habe ich gesucht. Kann man die Grafik des Kreises sowie das des Ausklappmenüs auch mit einem Bild ersetzen?

  • Oder einfach mal für alle posten ;)

    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • Danke, das hat mir gereicht ums zu finden :rofl:

    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"