Problem mit Gui

  • Sieht schwerer aus, als es ist ^^

    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"

  • Du kannst ganz einfach Bilder darstellen, diese müssen nicht mal Transparent sein.
    Was über den Rand steht wird automatisch abgeschnitten.

    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", 480, 250, -1, -1, $WS_POPUP)
    GuiCtrlCreatePic(@ScriptDir & "\Hintergrund.bmp", 0, 0, 480, 250)
    GuiCtrlSetState(-1,$GUI_DISABLE)
    _Close()

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

    GUICtrlCreateLabel('X', 140, 50, 20, 20)
    GUICtrlSetOnEvent(-1, '_End')
    GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)

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

    GUICtrlCreateLabel('O', 125, 50, 15, 20)
    GUICtrlSetOnEvent(-1, '_Open')
    GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)

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

    GUICtrlCreateLabel('<-', 440, 25, 25, 20)
    GUICtrlSetOnEvent(-1, '_Close')
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)

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

    GUISetState()
    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]
  • Sieht sehr gut aus. Habe leider keine Zeit mir das Script jetzt genauer anzuschauen, da ich morgen meine erste Prüfung schreibe. Sobald ich Zeit gefunden habe und noch Fragen habe bzw. etwas nicht funktioniert, werde ich mich wieder melden.

    Ich danke dir vielmals :thumbup:

  • Hier nochmal ein bissl anders.

    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", 480, 250, -1, -1, $WS_POPUP)
    Global $hRgn = _WinAPI_CreateRoundRectRgn(5, 30, 190 + 5, 190 + 30, 190, 190)
    _WinAPI_SetWindowRgn($hGui, $hRgn)

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

    GUICtrlCreateLabel('X', 140, 50, 20, 20)
    GUICtrlSetOnEvent(-1, '_End')

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

    GUICtrlCreateLabel('->', 125, 50, 15, 20)
    GUICtrlSetOnEvent(-1, '_Open')

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

    GUICtrlCreateLabel('<-', 440, 25, 25, 20)
    GUICtrlSetOnEvent(-1, '_Close')

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

    GUISetState()

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

    While 1
    Sleep(100)
    WEnd

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

    Func _End()
    Exit
    EndFunc

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

    Func _Open()
    Local $hRgn1, $hRgn2
    For $i = 120 To 470 Step 10
    $hRgn1 = _WinAPI_CreateRoundRectRgn(5, 30, 195, 220, 190, 190)
    $hRgn2 = _WinAPI_CreateRectRgn(120, 20, $i, 230)
    _WinAPI_CombineRgn($hRgn1, $hRgn1, $hRgn2, $RGN_OR)
    _WinAPI_SetWindowRgn($hGui, $hRgn1)
    ;Sleep(5)
    Next
    EndFunc

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

    Func _Close()
    Local $hRgn1, $hRgn2
    For $i = 470 To 120 Step - 10
    $hRgn1 = _WinAPI_CreateRoundRectRgn(5, 30, 195, 220, 190, 190)
    $hRgn2 = _WinAPI_CreateRectRgn(120, 20, $i, 230)
    _WinAPI_CombineRgn($hRgn1, $hRgn1, $hRgn2, $RGN_OR)
    _WinAPI_SetWindowRgn($hGui, $hRgn1)
    ;Sleep(5)
    Next
    $hRgn1 = _WinAPI_CreateRoundRectRgn(5, 30, 190 + 5, 190 + 30, 190, 190)
    _WinAPI_SetWindowRgn($hGui, $hRgn)
    EndFunc

    [/autoit]
  • Ich habe nun versucht, dass Script mit den WinAPI-Befehlen zu verstehen. Was jede einzelne dieser Befehle bewirkt, glaub ich verstanden zu haben. Jedoch gelang es mir auch mittels der Hilfe sowie SuFu nicht, die Werte für beispielsweise _WinAPI_CreateRoundRectRgn festzulegen.

    Kann mir vllt jemand erläutern, wie die einzelnen Zahlen zustande kommen und weshalb bei manchen ein + angehängt wird?

    [autoit]

    _WinAPI_CreateRoundRectRgn(5, 30, 190 + 5, 190 + 30, 190, 190)

    [/autoit]

    Ich schaffe es einfach nicht, das Script auf eine andere Hintergrunddatei mit einem anderen Kreisradius anzupassen.

  • Du kannst es auch so schreiben.

    [autoit]

    _WinAPI_CreateRoundRectRgn(5, 30, 195, 220, 190, 190)

    [/autoit]

    Also in meiner Hilfe steht die Funktion halt unter WinAPI. Aber hier nochmal ein Auszug: