Ein Dialogfeld in zwei teile aufteilen



  • Hallo,

    ich möchte eine dialogfeldbasierte Anwendung erstellen, bei der auf der linken Seite dauerhaft ein Menü eingeblendet ist, und rechts ja nachdem was man anklickt verschiedene Dialoge eingeblendet werden. Ähnlich wie bei jedem Windows-Setup-Programm oder Assistenten, wo unten der zurück weiter und abbrechen Knopf fest sind, und oben gewechselt wird.

    Ich hab schon viele Lösungen für Dokument/Ansicht-anwendungwen mit CSplitterWnd gefunden, aber wie geht das bei einem Dialogfeld?
    Dynamische Größenänderung ist nicht nötig bzw. soll nicht möglich sein, und die optische Trennung druch den Balken muss auch nicht sein, es reicht also wenn ich eine Möglichkeit habe, eine Dialogfeldressource zur Laufzeit in einem Teil eines übergeordneten Dialogs anzuzeigen.

    Vielen Dank für jeden Tipp, Link, Code.
    MfG David Epping



  • Das könntest du ähnlich wie bei Registerkarten realisieren. Dort werden auch immer die entsprechenden Dialogresourcen in den Hauptdialog hereingeladen.

    Dazu gibt es in diesem Forum genug Threads (evtl. auch in der FAQ)



  • Ich wollte aber keine Registerkarten verwenden, sondern ein eigenes Menü aus ein paar Buttons, und die geladenen Dialoge auch ohne Rahmen darstellen.
    Ich kann auch keine Stelle finden, an der die Erstellung von eigenen Registerkarten erklärt ist, wo ich mir dann das Prinzip des Dialog-Ladens abschauen könnte.



  • Wenn man kein Registerkartenelement nimmt hast du auch keinen Rand. Es sollte ja nur vom Prinzip so sein.

    Also los gehts: Du brauchst einen Hauptdialog und mehrere "Unterdialoge", für die du auch entsprechende Dialog-Klassen erstellst.

    Beim laden des Hauptdialogs, lädst du jeden "Unterdialog" per

    Unterdialog1.Create(IDD_UDIALOG1);
    Unterdialog1.MoveWindow(15,70,560,230); // Hier Pos. ausprobieren
    

    Bei dem Ereignis, dass den Wechsel auslösen soll (was auch immer: Buttons, Klick auf Grafik, etc.), lässt du einen Dialog anzeigen und den Rest verstecken:

    Unterdialog1.ShowWindow(SW_SHOW);
    Unterdialog2.ShowWindow(SW_HIDE);
    Unterdialog3.ShowWindow(SW_HIDE);
    Unterdialog4.ShowWindow(SW_HIDE);
    

    Die Unterdialoge sollten keinen Rahmen haben und auch keine Titelleiste, etc.



  • Hallo,

    Danke für deine Mühe. Geht das wirklich so einfach? Da wird doch dann einfach noch ein neues Fenster erzeugt, dass seine Position über dem Hauptdialog hat, und keinen Rand, damit's nicht auffällt. Wie verhält sich dieses neue Fenster z.B. beim verschieben des hauptdialogs? folgt es diesem oder bleibt es fest? Sieht man da dann ein ruckeln oder so?
    Ich weiß ja nicht wie das bei Registerkarten gemacht ist, vielleicht genauso?

    Mir ist noch eingefallen, ob man nicht vielleicht wirklich einfach eine Registerkarte erstellen kann, und dann irgendwie die Tab's und den Rand ausblenden kann?

    PS: Noch ne Frage, wie kann ich Steuerelemente in der registerkarte plazieren.
    Da gab's ne Tastenkombination, um im Ressourceneditor die Seiten durchzuschalten, aber ich weiß die nicht mehr.



  • Hallo nochmal,

    entschuldige bitte meine Zweifel, aber ich hab's grad ausprobiert, und es funktioniert super!!!
    Zu beachten ist lediglich, dass man den Dialog auf Untergeordnet einstellt, was du mit "Untedialog" wohl auch gemeint hast.

    Vielen dank nochmal.



  • CGI-BIN schrieb:

    folgt es diesem oder bleibt es fest?

    es folgt diesem.

    CGI-BIN schrieb:

    Ich weiß ja nicht wie das bei Registerkarten gemacht ist, vielleicht genauso?

    ganz genauso. nur das es dort halt ein standarisiertes steuerelement für die register gibt.

    CGI-BIN schrieb:

    Mir ist noch eingefallen, ob man nicht vielleicht wirklich einfach eine Registerkarte erstellen kann, und dann irgendwie die Tab's und den Rand ausblenden kann?

    wäre sinnlos. weil du die gleiche arbeitet hättest, da ja registerkarten genauso arbeiten.

    CGI-BIN schrieb:

    PS: Noch ne Frage, wie kann ich Steuerelemente in der registerkarte plazieren.
    Da gab's ne Tastenkombination, um im Ressourceneditor die Seiten durchzuschalten, aber ich weiß die nicht mehr.

    geht wie gesagt nicht, da die registerkarten nur so funktionieren wie oben erwähnt. man kann also nicht einfach in der ide steuerelemente raufziehen. das geht nur bei visual basic, etc.


Anmelden zum Antworten