Dialog Minimieren



  • moin

    ich hab nen dialog...
    diesen erzeug ich wie folgt:

    drucker = new CDruckerDlg;
    	drucker->pApp = this;
    	drucker->Create();
    

    dieser dialog zeigt text und fehler an...
    dier dialog kann minimiert werden.... soweit sogut...

    nun möchte ist beim schreiben von fehlertexten (in dem dialog gibt es 2 felder 1 für normale texte 1 für fehler) das die funktion nachguckt: ist der dialog minimiert -> wenn ja -> maximiere ihn

    wie geht das ?
    also zum einen wie kann ich herraus finden ob der dialog minimiert ist
    und zum 2. wie maximiere ich ihn wieder ?

    mfg LT



  • Die Möglichkeit, die ich jetzt sehe ist die Windows-Message WM_SYSCOMMAND.
    Wenn Du OnSysCommand() abfängst, kannst Du herausfinden ob der Dialog minimiert ist; Wenn Du ihn dann wiederherstellen willst, brauchst du nur die Message WM_SYSCOMMAND mit dem Parameter SC_RESTORE an den Dialog zu senden.



  • Wieso nicht einfach IsIconic( ) zum abfragen ob es Minimiert ist und ShowWindow(SW_SHOWNORMAL) zum Wiederherstellen wenn es minimiert ist.



  • danke 🙂 das hat gepasst



  • moin

    so und nu noch ne frage:
    ich möchte, wenn ich auf den minimieren button klicke das folgendes passiert:

    es soll aus meinem dialog eine kleinere version werden, soll heissen wenn ich auf minimieren button klicke soll der dialog nicht wie üblich einfach klein werden und mit ner titelleiste zum wieder groß machen sondern es soll ein dialog angezeigt werden wo z.b. nur der status angezeigt wird.

    also z.b.
    ich hab einen dialog der hat 2 text felder
    wenn ich auf minimieren klicke soll nur noch eine zeilen anzahl der beiden dialoge angezeigt werden ...(is nur beispiel aber so kann ich dann meinen wunsch umsetzten wenn ich weis wie das geht)

    wie kann ich die minimize funktion so umschreiben ?

    mfg LT





  • Jetzt kommt WM_SYSCOMMAND doch noch ins Spiel...
    Hier kannst Du eine eigene Routine einfügen. Wenn du dann die Nachricht nicht mehr an das Framework weitergibst, wird nur Deine Routine ausgeführt.



  • ??? keine ahnung wie du das meinst ...
    wie soll denn das aussehn und welchen befehl benutze ich damit die minimierung net "vollständig" ist sondern nur kleiner wird usw ... also ich ab leider im mom gar keinen plan wie man sowas macht ... wenn jemand beispiel code hat oder threads kennt wo dazu was drin steht mal bitte posten ...


  • Mod

    Du kannst WM_SYSCOMMMAND abfangen.
    Nun minimierst Du nicht die Applikation sondern setzt ein Flag und zeichnest Deinen Dialog neu mit der minimierten Ansicht.

    Alternativ erzeugst Du einfach einen neuen Dialog, der so aussieht wie Du es möchtest und zeigst diesen an. Den alten Dialog versteckst Du.



  • hi martin

    kannst du das bitte etwas ausführlicher schreiben ?

    also ok ich reagier aud WM_SYSCOMMMAND...
    und wie soll dann der der code in der funktion aussehn?

    also wie bekomm ich es hin das mein programm dann nur aufs minimieren reagiert ?
    soll ich in der WM_SYSCOMMMAND abfragen ob IsIconic() ?

    ok wenn ich das mache wie soll ich dann weiter vor gehn?
    wie zeichne ich denn das fenster "neu" damit es dann kleiner wird?

    danke für hilfe
    LT



  • also ich versteh net wie ich bei nem minimierten fenster nen "dialog körper" zeichnen kann ... ich bekomms einfach net hin ... wie soll das gehen ?



  • ok habs jetzt mit minimieren -> verstekcen -> neuen dlg anzeigen gemacht... das geht ...


Log in to reply