Fenster anordnen / Frames einsetzen

  • Hallo Gemeinde,
    ich benötige mal wieder einen anstoß,
    Mittlerweile habe ich mir ein paar Programme gebastelt, die alle ganz nach meinen Vorstellungen funktionieren.
    Da aber alle "indirekt" mit dem gleichen Rechner zu tun haben, dachte ich mir, ich mach das ganz mal schön und pack die einzelnen Programme in ein Menü.
    Ist aber nicht schön. was ich will, ist so eine Art Fenstertechnick die man auch vom Internet kennt.
    Also linkes Fenster ein Menü und im rechten Fenster sollten die Programme dann erscheinen. So in dem Stil von AutoItStudio fände ich super,
    leider habe ich im Augenblick keine Ahnung wie ich da anfangen soll und habe auch nichts darüber gefunden.
    Währe für ein Beispiel sehr dankbar.

    Gruß
    Manfred

    Ja, ich weiß es auch, das Problem ist einen halben Meter vor dem Bildschirm. 8o

    Einmal editiert, zuletzt von Mr-Ferret (19. März 2014 um 13:50)

  • Das Einfachste wäre, links ein ListView oder eine ListBox zu parken, in der dann die Programme aufgelistet sind. Dann kannst du entweder die Fenster der Programme selbst platzieren (Win...() Befehle), oder du kannst alle in das Programm integrieren und mit Child-GUIs arbeiten.

    Alternativ kannst du natürlich das Menü mit Icon-Butons oder gleich mit GDI+ Symbolen erstellen. Da steckt allerdings mehr Arbeit dahinter.

    Vielleicht wäre auch eine Skizze von dem Menu, wie du es dir vorstellst ganz hilfreich.

  • Erst mal danke für die super schnelle Antwort!

    ich hab mal ein skizze als Anhang (ganz einfach zusammen getackert, beansprucht keine Preis auf schönheit) eingefügt.

    bzgl. Child-GUIs habe ich leider nicht ganz verstanden was du damit meinst.
    Sorry, aber ich gehöre eher zur Fraktion dummies was Programmieren angeht. ;( ?(

    Danke
    Manfred

  • Verstehe ich das richtig, dass du die einzelnen Programme nicht ändern willst, sondern sie so wie sie sind aufrufen willst und die dann in dem Fenster sind?

  • Ich sag mal so, wenn ich die Programme anpassen muss um Sie in das Fenster zu integrieren, dann sollte das nicht das Problem sein. Wenn das ohne Änderung möglich währe, das währe noch besser, :thumbup: was ich mir aber nicht vorstellen kann.
    Mir gehts aber in erste Linie darum, zu verstehen, wie ich das grundsätzlich erreichen kann, Programme in so einem Fenster ablaufen zu lassen. Also z. B. wie in der Grafik links die Aufrufe und im rechten Fenster den Programmablauf.

    Ja, ich weiß es auch, das Problem ist einen halben Meter vor dem Bildschirm. 8o

  • Habe es selber noch nie benutzt, aber vielleicht könnte dir das helfen:

    [autoit]

    GUICreate
    ;und als erweiterten Stile:
    $WS_EX_MDICHILD

    [/autoit]


    Erstellt ein Child-Fenster innerhalb seines Parent-Fensters (als Simulation, nicht wirklich MDI).

  • [autoit]


    GUICreate
    ;und als erweiterten Stile:
    $WS_EX_MDICHILD

    [/autoit]

    Sorry, aber jetzt bin ich völlig verwirrt, $WS_EX_MIDICHILD ist doch nix anderes als eine Variable!? ?(
    Oder hab ich das was übersehen?

    Ja, ich weiß es auch, das Problem ist einen halben Meter vor dem Bildschirm. 8o

  • Du hast recht, es ist eine Variable, aber damit kann man den Stile Einer GUI festlegen.
    Du kannst netürlich auch den Wert der Variable nehmen (0x00000040), der wird in WindowsConstants.au3 definiert.
    Der sorgt dafür, dass die GUI innerhalb der Parent Fensters angezeigt wird, $WS_POPUP macht den Rand weg.

    [autoit]

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

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

    Example()

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

    Func Example()

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

    $gui = GUICreate("Test", 400,300)
    GUISetBkColor(0xFFFFFF, $gui)
    $gui2 = GUICreate("", 169, 68, 20, 20, $WS_POPUP, $WS_EX_MDICHILD, $gui)
    GUISetBkColor(0x000000, $gui2)
    GUISetState(@SW_SHOW, $gui)
    GUISetState(@SW_SHOW, $gui2)

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

    Do
    Local $msg = GUIGetMsg()

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

    Until $msg = $GUI_EVENT_CLOSE
    EndFunc

    [/autoit]
  • Super vielen Dank! :thumbup:
    Damit kann ich arbeiten ! Das Prinzip $gui, $gui2 ist einfach zu verstehen, hab sogar schon $gui3 :D
    Jetzt hab ich wieder ein haufen zum umschreiben, aber das ist ja was spaß macht.
    Und ich hab wieder was gelernt! :rock:

    Danke
    Gruß Manfred

    Ja, ich weiß es auch, das Problem ist einen halben Meter vor dem Bildschirm. 8o

  • Zitat von Mr-Ferret


    Das Prinzip $gui, $gui2 ist einfach zu verstehen, hab sogar schon $gui3


    Auch wenn du das jetzt wahrscheinlich nicht als Problem ansiehst - solche Variablennamen solltest du zwecks Ordnung und Übersicht dringend vermeiden!
    Gerade wenn das hier zu einem größeren Projekt ausartet.

    Dazu hier auch ein kleiner Thread von mir: Tutorial - Sauber Programmieren

    Gruß

  • Hallo Chesstiger,

    sorry habe ich vielleicht falsch rübergebracht, mir ist durchaus bewusst, das ich Variablen nicht nach oberen Beispiel benennen soll.
    Ich Versuche diese möglichst Sprechend zu benennen. "gui1, gui2, gui3,....." kommen in meinen kleinen oder größeren Programmen nicht vor.

    Danke auch für den Link, werde ich mir noch durchlesen.
    Programmierung ist für mich sowie so ein Mysterium, aber es macht Spaß wenn man wieder einen kleinen Schritt weiter kommt.

    Gruß
    Manfred

    Ja, ich weiß es auch, das Problem ist einen halben Meter vor dem Bildschirm. 8o