Dialog in anderen Dialog einbinden



  • Das ist mal was ausgefallenes 🙂 Also ich würde das so machen:

    - Ermittel die Koordinaten deines Hauptdialogs. Somit kennst du die Höhe, Breite und Position deines Hauptdialogs

    - Ermittle die Maße deines zweiten Dialogs

    - Jetzt wo du die Maße beider Dialoge kennst, kannst du den zweiten Dialog anzeigen und mit MoveWindow() auf den Hauptdialog setzen. Habs eben kurz ausprobiert und klappt sogar 🙂

    Du musst dann natürlich noch die Titelleiste von deinem zweiten Dialog ausschalten.



  • Panschev schrieb:

    Das ist mal was ausgefallenes 🙂 Also ich würde das so machen:

    - Ermittel die Koordinaten deines Hauptdialogs. Somit kennst du die Höhe, Breite und Position deines Hauptdialogs

    - Ermittle die Maße deines zweiten Dialogs

    - Jetzt wo du die Maße beider Dialoge kennst, kannst du den zweiten Dialog anzeigen und mit MoveWindow() auf den Hauptdialog setzen. Habs eben kurz ausprobiert und klappt sogar 🙂

    Du musst dann natürlich noch die Titelleiste von deinem zweiten Dialog ausschalten.

    hehe, wieso denn ausgefallen?
    Der Hintergrund ist der Folgende:
    Ich habe ein Dialogprogramm, welches in 4 Hauptbereiche unterteilt ist - die 4 Bereiche sind durch Registerkarten anwählbar.
    So weit so gut.

    Jetzt beim 4. Hauptbereich soll man verschiedenen Tätigkeiten (Tasks) auswählen können. Dies will man durch ein DropDown-Menü realisieren.
    Jetzt je nach gewähltem Eintrag aus dem Dropdown will man verschiedene Controls anzeigen. D.h. die alten müssen ausgeblendet werden - das ist doch irgendwie doof, wenn man das so mit ein- & ausblenden realisiert. Daher bin ich auf die "Einbettung" eines anderen Dialoges, eben z.B. Propertysheets gekommen.
    Nochmals Registerkarten für die Untertasks zu verwenden sieht irgendwie nicht so toll aus....



  • äääh... der übliche weg ist...

    Den Dialog als Child control erzeugen. Der Child-Dialog bekommt DS_CONTROL style, der Parent-Dialog WS_EX_CONTROLPARENT.



  • na was peterchen schreibt hört sich besser an, als meine variante. ich wusste aber auch nicht das man sowas häufiger macht und hatte versucht ne notlösung zu finden 😉



  • Auf die gleiche Art werden die Registerkarten gehandhabt - das SysTabCtrl32 erstellt nur die Reiter + den Rahmen. Die einzelnen Seiten sind Unterdialoge, die als Childs des Tab Controls eingefügt und beim Umschalten der Reiter entsprechend angezeigt/versteckt werden.



  • peterchen schrieb:

    äääh... der übliche weg ist...

    Den Dialog als Child control erzeugen. Der Child-Dialog bekommt DS_CONTROL style, der Parent-Dialog WS_EX_CONTROLPARENT.

    Ich habe das nicht verstanden.

    Also: ich habe zwei Dialoge, wobei ich den zweiten als "untergearodnet" einstufe und ohne Rahmen.

    Und jetzt? Mit welchem Control oder so kann ich nun den 2. Dialog in den Hauptdialog einfügen und verwenden? Ich schnalls echt nicht. Danke nochmals für deine Hilfe im Voraus!



  • Ich weiss es jetzt auch nur, weil ich es mal ausgetestet habe. Schreib mal das in die OnInitDialog() Funktion deines Hauptdialogs:

    // Das zweite Dialogfeld erzeugen 
    m_dlgDialog_Neu.Create(IDD_DIALOG1, this); 
    
    // Zweites Dialogfeld anzeigen 
    m_dlgDialog_Neu.ShowWindow(SW_SHOW);
    

    Wobei m_dlgDialog_Neu eine Instanz von dem zweiten Dialog ist und IDD_DIALOG1 die ID des zweiten Dialogs.



  • Panschev schrieb:

    Ich weiss es jetzt auch nur, weil ich es mal ausgetestet habe. Schreib mal das in die OnInitDialog() Funktion deines Hauptdialogs:

    // Das zweite Dialogfeld erzeugen 
    m_dlgDialog_Neu.Create(IDD_DIALOG1, this); 
    
    // Zweites Dialogfeld anzeigen 
    m_dlgDialog_Neu.ShowWindow(SW_SHOW);
    

    Wobei m_dlgDialog_Neu eine Instanz von dem zweiten Dialog ist und IDD_DIALOG1 die ID des zweiten Dialogs.

    Habs ausgetestet und jo, es sieht ungefähr so aus, wie ich es mir vorstelle - nur muss ich den dialog nun noch in die richtige position rücken. thanks a million!



  • Ich hab das jatzt auch mal ausprobiert:
    Gibt es eine einfache Möglichkeit, dass sich der untergeordnete Dialog "fest mit dem Hauptdialog verankert"? Dass er z.B. mit verschoben wird oder muss ich das Verschieben des Hauptdialogs an die untergeordneten weitergeben?



  • Macht er ja normalerweise... mußt aber die Dialogresource auf WS_CHILD setzen (nicht "overlapped" oder "popup" !)


Anmelden zum Antworten