Modales Window möglich??? (nicht Dialog)



  • Ich erzeuge zur Zeit mit CreateWindowEx sowohl ein Hauptfenster als auch ein zweites dialogartiges Fenster (WS_POPUP), welches das Hauptfenster als parent bekommt. Soweit so gut. Das zweite Fenster bleibt auch immer schön im Vordergrund, auch wenn ich das Hauptfenster focussiere.

    Wie kann ich aber das zweite Fenster modal machen? Mir ist die DialogBox-Funktion bekannt, doch scheint diese ja nur mit vorgerfertigten Dialog-Templates zu arbeiten?

    Kann ich WS_POPUP-Fenster modal machen? Wenn nicht, gibts tricks? Z.B. könnte ich für die Zeit, in der das zweite Fenster sichtbar ist, das Hauptfenster nicht focussierbar machen? Gibts sowas?


  • Mod

    Modale-Fenster haben keine direkte Unterstützung, außer durch die Dialog Funktionen.

    Ein modales Fenster kann sehr einfach erzeugt werden:
    1. Neues Fenster erzeugen mit Angabe des Parents!
    2. Parent per EnableWindow(...FALSE); deaktivieren.

    Umgekehrt um es wieder nicht modal zu machen:
    3. Parent aktivieren per EnableWindow(...TRUE);
    4. Focus setzen auf Parent
    5. Fenster zerstören.

    BTW: Du kanst auch ein leeres Dialog-Template erzeugen mit den Stilen, die Du gerne hättest und DialogBox aufrufen... Den Rest machst Du dann eben in Deiner DialogProc.



  • Ein Problem was man aber trotzdem hat (und das ist ziemlich nervig, ich spreche aus Erfahrung^^) ist beispielsweise das minimieren und wiederherstellen von Fenstern :p . Da kann beim sich beim pfrimeln richtig schön die Finger brechen 😃 .


  • Mod

    @codefinder: Was meinst Du?



  • Naja wenn das modale Fenster minimierbar sein soll, muss man ja, bei entsprechendem Befehl auch das Parent-Fenster minimieren. Das gleiche gilt fürs wiederherstellen (WM_SYSCOMMAND) uvm. . Bei meinem Programm bestand ~(bzw. besteht eigentlich immer noch)~ das Problem, dass das modale Fenster minimierbar sein soll und falls es dann mal minimiert wird, sollte sinnvollerweise auch das Parent-Fenster mit verschwinden. Allerdings gab es auch noch ein weiteres Fenster (was also mehr oder minder unabhängig von meinem anderen Parent-Fenster agieren sollte), welches unter bestimmten Umständen, eben auch dieses besagte Parent-Fenster minimiert, bei entsprechendem Befehl darauf. Ist so ein bissl schwer zu erklären, erscheint aber sofort logisch, wenn man das Programm benutzen würde 😉 .


  • Mod

    Wenn es eine echte Parent Child Struktur gibt sollte es genügen das Parent zu minimieren. Versuch es mal...



  • Martin Richter schrieb:

    Wenn es eine echte Parent Child Struktur gibt

    Oho...Du meinst ich sollte bei CreateWindowEx (im Parameter hWndParent) das (virtuelle) Parent-Fenster angeben ?! ... Oh Gott, das wär echt mal ne gute Idee *vor die Wand hau*, das ich da noch nicht drauf gekommen bin 🤡 . Danke für den Tipp! (Habe das bisher immer über sieben Ecken und acht Kanten gelößt 😃 .)

    EDIT, PS: Das Design Deines Blog's sieht echt gut aus! (fällt mir grad mal so auf^^)



  • Martin Richter schrieb:

    Modale-Fenster haben keine direkte Unterstützung, außer durch die Dialog Funktionen.

    Ein modales Fenster kann sehr einfach erzeugt werden:
    1. Neues Fenster erzeugen mit Angabe des Parents!
    2. Parent per EnableWindow(...FALSE); deaktivieren.

    Umgekehrt um es wieder nicht modal zu machen:
    3. Parent aktivieren per EnableWindow(...TRUE);
    4. Focus setzen auf Parent
    5. Fenster zerstören.

    Funktioniert, so wie ich es mir gedacht habe. Danke!


  • Mod

    Sorry OT:

    CodeFinder schrieb:

    EDIT, PS: Das Design Deines Blog's sieht echt gut aus! (fällt mir grad mal so auf^^)

    Jo! Danke! Ich finde es auch stark. Ich habe lange gesucht und noch einiges noch an PHP-Arbeit reingesteckt. Das Design verbreitert, übersetzt usw. usw. usw.
    Nun den, ich hoffe regelmässig dazu zu kommen was brauchbares für die C++ Welt zu hinterlassen 🙂

    Ich zähle zwar zu den Menschen, die gar nicht mehr wissen wann sie mit dem Internet angefangen haben, weil es schon so lange her ist und ich auch noch weiß was es bedeutet 9600bps oder 14400bps zu haben aber was bedeutet ^^? Ich habe es in diesem Forum schon öfters gesehen und in einer Beschreibung habe ich gelesen es bedeutet "lustig", was aber in Deinem Kontext nicht passt.



  • Ich glaub es ist mit diesem hier vergleichbar: 🙄
    Sollen einfach zwei Augenbrauen darstellen.


Anmelden zum Antworten