GUI dynamisch an Desktopauflösung anpassen

  • Hallo Leute,

    ich habe mir hier was schönes gecodet und stehe nun vor einem (für mich) großen Problem:
    Der Background meiner GUI ist 1226x744 Pixel groß, sprich zu groß für viele Anwender. Ich will das nun alles "relativ" machen...

    Mit dem Code lese ich erstmal aus, ob die GUI die volle Größe haben kann oder nicht.

    Spoiler anzeigen
    [autoit]

    If @DesktopWidth > 1225 Then
    $width = 1226
    Else
    $width = @DesktopWidth
    EndIf

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

    If @Desktopheight > 743 Then
    $height = 744
    Else
    $height = @Desktopheight
    EndIf

    [/autoit]

    Wenn jetzt aber die Auflösung kleiner als 1226x744 ist, muss ich das bei der Erstellung der GUI bzw Erstellung der GUI-Objekte beachten. Nur ich weiß nicht, wie ich das machen soll. Momentan wird meine GUI so erstellt:

    Spoiler anzeigen
    [autoit]

    Func create_inter()
    _IEErrorHandlerRegister ()

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

    $oIE = _IECreateEmbedded ()

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

    $myg = GUICreate ($servername & " Launcher", $width, $height, -1, -1, $WS_OVERLAPPEDWINDOW)

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

    $Back = GUICtrlCreatePic ("\back.bmp", 0, 0, 1226, 744)
    GUICtrlSetState(-1, $GUI_DISABLE)

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

    $credits = GUICtrlCreateLabel ( "", 25, 25, 450, 200)
    GUICtrlSetBkColor( -1, $GUI_BKCOLOR_TRANSPARENT)

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

    $Button_1 = GUICtrlCreatePic ("\images\buttons\News.bmp", 50, 230, 170, 41)
    $Button_1s = GUICtrlCreatePic ("\images\buttons_pressed\News.bmp", 50, 230, 170, 41)
    GUICtrlSetState ( -1, $GUI_HIDE)
    $Button_2 = GUICtrlCreatePic ("\images\buttons\Forum.bmp", 50, 271, 170, 41)
    $Button_2s = GUICtrlCreatePic ("\images\buttons_pressed\Forum.bmp", 50, 271, 170, 41)
    GUICtrlSetState ( -1, $GUI_HIDE)
    $Button_3 = GUICtrlCreatePic ("\images\buttons\Erste Schritte.bmp", 50, 312, 170, 41)
    $Button_3s = GUICtrlCreatePic ("\images\buttons_pressed\Erste Schritte.bmp", 50, 312, 170, 41)
    GUICtrlSetState ( -1, $GUI_HIDE)
    $Button_31 = GUICtrlCreatePic ("\images\buttons\Account erstellen.bmp", 70, 358, 119, 28)
    GUICtrlSetState ( -1, $GUI_HIDE)
    $Button_31s = GUICtrlCreatePic ("\images\buttons_pressed\Account erstellen.bmp", 70, 358, 119, 28)
    GUICtrlSetState ( -1, $GUI_HIDE)
    $Button_32 = GUICtrlCreatePic ("\images\buttons\Account aktivieren.bmp", 70, 386, 119, 28)
    GUICtrlSetState ( -1, $GUI_HIDE)
    $Button_32s = GUICtrlCreatePic ("\images\buttons_pressed\Account aktivieren.bmp", 70, 386, 119, 28)
    GUICtrlSetState ( -1, $GUI_HIDE)
    $Button_4 = GUICtrlCreatePic ("\images\buttons\Hilfe.bmp", 50, 353, 170, 41)
    $Button_4s = GUICtrlCreatePic ("\images\buttons_pressed\Hilfe.bmp", 50, 353, 170, 41)
    GUICtrlSetState ( -1, $GUI_HIDE)
    $Button_41 = GUICtrlCreatePic ("\images\buttons\FAQ.bmp", 70, 399, 119, 28)
    GUICtrlSetState ( -1, $GUI_HIDE)
    $Button_41s = GUICtrlCreatePic ("\images\buttons_pressed\FAQ.bmp", 70, 399, 119, 28)
    GUICtrlSetState ( -1, $GUI_HIDE)
    $Button_42 = GUICtrlCreatePic ("\images\buttons\Realmlist.bmp", 70, 427, 119, 28)
    GUICtrlSetState ( -1, $GUI_HIDE)
    $Button_42s = GUICtrlCreatePic ("\images\buttons_pressed\Realmlist.bmp", 70, 427, 119, 28)
    GUICtrlSetState ( -1, $GUI_HIDE)
    $Button_43 = GUICtrlCreatePic ("\images\buttons\Ticket schreiben.bmp", 70, 455, 119, 28)
    GUICtrlSetState ( -1, $GUI_HIDE)
    $Button_43s = GUICtrlCreatePic ("\images\buttons_pressed\Ticket schreiben.bmp", 70, 455, 119, 28)
    GUICtrlSetState ( -1, $GUI_HIDE)
    $Button_5 = GUICtrlCreatePic ("\images\buttons\Optionen.bmp", 50, 394, 170, 41)
    $Button_5s = GUICtrlCreatePic ("\images\buttons_pressed\Optionen.bmp", 50, 394, 170, 41)
    GUICtrlSetState ( -1, $GUI_HIDE)
    $Button_51 = GUICtrlCreatePic ("\images\buttons\WoW-Pfad.bmp", 70, 440, 119, 28)
    GUICtrlSetState ( -1, $GUI_HIDE)
    $Button_51s = GUICtrlCreatePic ("\images\buttons_pressed\WoW-Pfad.bmp", 70, 440, 119, 28)
    GUICtrlSetState ( -1, $GUI_HIDE)
    $Button_52 = GUICtrlCreatePic ("\images\buttons\Hackpatches.bmp", 70, 468, 119, 28)
    GUICtrlSetState ( -1, $GUI_HIDE)
    $Button_52s = GUICtrlCreatePic ("\images\buttons_pressed\Hackpatches.bmp", 70, 468, 119, 28)
    GUICtrlSetState ( -1, $GUI_HIDE)
    $Button_6 = GUICtrlCreatePic ("\images\buttons\WoW Spielen.bmp", 50, 435, 170, 41)
    $Button_6s = GUICtrlCreatePic ("\images\buttons_pressed\WoW Spielen.bmp", 50, 435, 170, 41)
    GUICtrlSetState ( -1, $GUI_HIDE)

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

    $Button_mute = GUICtrlCreatePic ("\images\mute.bmp", 0, 0, 25, 25)
    $Button_resume = GUICtrlCreatePic ("\images\resume.bmp", 0, 0, 25, 25)
    GUICtrlSetState ( -1, $GUI_HIDE)

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

    $version = GUICtrlCreateLabel ("v " & $version, 535, 165, 36, 14)
    GUICtrlSetFont( -1, 8)
    GUICtrlSetColor( -1, 0xffcc00)
    GUICtrlSetBkColor( -1, $GUI_BKCOLOR_TRANSPARENT)

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

    $copyr = GUICtrlCreateLabel ("Copyright (c) 2007-2008 by MCT && DO-WoW", 920, 165, 300, 14)
    GUICtrlSetFont( -1, 7)
    GUICtrlSetColor( -1, 0x0000FF)
    GUICtrlSetBkColor( -1, $GUI_BKCOLOR_TRANSPARENT)

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

    $l_server = GUICtrlCreateLabel ( "wait", 655, 705, 130, 20)
    GUICtrlSetFont( -1, 15)
    GUICtrlSetColor( -1, 0x00cc00)
    GUICtrlSetBkColor( -1, $GUI_BKCOLOR_TRANSPARENT)

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

    $l_server_p = GUICtrlCreateLabel ( "", 717, 710, 130, 20)
    GUICtrlSetFont( -1, 10)
    GUICtrlSetColor( -1, 0x00cc00)
    GUICtrlSetBkColor( -1, $GUI_BKCOLOR_TRANSPARENT)

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

    $r_server1 = GUICtrlCreateLabel ( "wait", 883, 705, 130, 20)
    GUICtrlSetFont( -1, 15)
    GUICtrlSetColor( -1, 0x00cc00)
    GUICtrlSetBkColor( -1, $GUI_BKCOLOR_TRANSPARENT)

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

    $r_server2 = GUICtrlCreateLabel ( "wait", 1100, 705, 130, 20)
    GUICtrlSetFont( -1, 15)
    GUICtrlSetColor( -1, 0x00cc00)
    GUICtrlSetBkColor( -1, $GUI_BKCOLOR_TRANSPARENT)

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

    $emb_inet = GUICtrlCreateObj ($oIE, 505, 200, 638, 450)

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

    global $autoupdate_label = GUICtrlCreateLabel ( "Aktualisierung", 270, 255, 160, 25, $SS_CENTER+$DS_SETFOREGROUND)
    GUICtrlSetFont( -1, 15)
    GUICtrlSetColor( -1, 0xffcc00)
    GUICtrlSetBkColor( -1, $GUI_BKCOLOR_TRANSPARENT)

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

    global $progressbar1 = GUICtrlCreateProgress ( 270, 280, 160, 24)
    global $progressbar2 = GUICtrlCreateProgress ( 270, 307, 160, 28)

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

    global $progresslabel1 = GUICtrlCreateLabel ( "Checking for updates ...", 270, 285, 160, 14, $SS_CENTER+$DS_SETFOREGROUND)
    GUICtrlSetColor( -1, 0x000000)
    GUICtrlSetBkColor( -1, $GUI_BKCOLOR_TRANSPARENT)

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

    yellow_font($Button_1)
    yellow_font($Button_2)
    yellow_font($Button_3)
    yellow_font($Button_31)
    yellow_font($Button_32)
    yellow_font($Button_4)
    yellow_font($Button_41)
    yellow_font($Button_42)
    yellow_font($Button_43)
    yellow_font($Button_5)
    yellow_font($Button_51)
    yellow_font($Button_52)
    yellow_font($Button_6)

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

    GUICtrlSetResizing ($Button_1, 1)
    GUICtrlSetResizing ($Button_2, 1)
    GUICtrlSetResizing ($Button_3, 1)
    GUICtrlSetResizing ($Button_31, 1)
    GUICtrlSetResizing ($Button_32, 1)
    GUICtrlSetResizing ($Button_4, 1)
    GUICtrlSetResizing ($Button_41, 1)
    GUICtrlSetResizing ($Button_42, 1)
    GUICtrlSetResizing ($Button_43, 1)
    GUICtrlSetResizing ($Button_5, 1)
    GUICtrlSetResizing ($Button_51, 1)
    GUICtrlSetResizing ($Button_52, 1)
    GUICtrlSetResizing ($Button_6, 1)
    GUICtrlSetResizing ($Button_mute, 1)
    GUICtrlSetResizing ($Button_resume, 1)
    GUICtrlSetResizing ($emb_inet, 1)
    GUICtrlSetResizing ($Back, 1)
    GUICtrlSetResizing ($credits, 1)
    GUICtrlSetResizing ($version, 1)
    GUICtrlSetResizing ($copyr, 1)
    GUICtrlSetResizing ($l_server, 1)
    GUICtrlSetResizing ($l_server_p, 1)
    GUICtrlSetResizing ($r_server1, 1)
    GUICtrlSetResizing ($r_server2, 1)
    GUICtrlSetResizing ($autoupdate_label, 1)
    GUICtrlSetResizing ($progressbar1, 1)
    GUICtrlSetResizing ($progressbar2, 1)
    GUICtrlSetResizing ($progresslabel1, 1)

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

    GUISetBkColor (0x000000)

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

    _IENavigate ($oIE, $news, 0)
    GUISetState (@SW_SHOW)
    EndFunc

    [/autoit]

    Wenn ich es aber so mache, dann wird der Background bei Erstellung der GUI nicht verkleinert (falls Auflösung < 1226x744), sondern es wird einfach der überstehende "Rest" abgeschnitten. Das will ich natürlich vermeiden... genauso sollten sich auch die Controls dem anpassen.

    Beim Resizen klappts ja auch alles perfekt, aber eben nicht bei der Neuerstellung. Ich weiß quasi wo das Problem liegt, kann es aber nicht lösen :/
    Ich würde mich sehr über Denkanstösse und Hilfen freuen, denn ich bin nun schon so weit gekommen und mag es jetzt auch zu Ende bringen :)

    P.S.: Tut mir Leid, falls am Code iwas für euch benötigtes fehlt, aber das Problem ist, dass das Script über 800 Zeilen lang ist und somit die Auswahl relativ schwer war ^^ Falls ihr was braucht, einfach (bitte) kurz schreiben und innerhalb kurzer Zeit habt ihr den benötigten Teil ;)

    Danke schonmal
    Greetz
    Lil-rich

    Einmal editiert, zuletzt von Lil-rich (18. März 2008 um 03:11)

    • Offizieller Beitrag

    Hallo,

    wenns beim Resizen funktioniert benutze doch einfach WinMove zum verkleinern.