Automatisches Wiederherstellen des Hauptdialogs
-
Halli hallo!
Ich als Anfänger würde gerne das weise vc++ - Orakel zu folgendem Problem
befragen:Ich habe eine MFC-Anwendung erstellt, in der u.a. Pixel/Lines gezeichnet
werden. Ebenso enthält es BMPs die bei Mouseclick das BMP austauschen.
Wenn dieser Dialog jetzt hinter ein anderes Fenster gerät (z.B. wenn
das Standard-Druckfenster zum Drucken des Dialogfeldes geöffnet wird)
werden dort wo sich das jeweilige Fenster befand alles BMPs und Zeichnungen
gelöscht.Wie bekomme ich es hin, dass automatisch dieser Bereich der Dialogbox erkannt
und neu gezeichnet wird (wobei die schon gemachten Zeichnungen wiederherge-
stellt werden sollen).Für sachdienliche Hinweise wäre ich euch wirklich 1A dankbar.

-
Moin Moin,
Ich habe das immer mit OnPaint() oder mit OnActivate() gemacht. Habe den bei den beiden Funktionen einfach neu zeichnen lassen habe mir aber noch nie andere Gedanken darüber gemacht wie man das am besten lösen kann. Also das ist eine Lösung aber wirklich nicht gerade die beste. Du kannst das so machen in dem du in den Funktionen einfach das neuzeichnen deines Bildes verursachst.
mfg
Hellsgore
-
Hi, merci schonmal für die Antwort!
Ich habe heute morgen das Problem gelöst.
ich habe in die funktionen, die zeichnen ne Boolvariable auf false setzen lassen, so dass es bei onpaint keine endlosschleife gibt.
die variable wird nämlich dort abgefragt.
Ist sie auf false gesetzt und es kommt zum onpaint, dann wird nix neugezeichnet und die var wieder auf True gesetzt.
Wird das fenster verdeckt und somit onpaint aufgerufen ist sie dann wieder
auf true und es wird neugezeichnet.
ein wenig umständlich, aber es geht und mir fällt kein besserer weg ein
Aber nochmals vielen Dank!
-
Servus,
hehe jetzt probier mal was anderes verschiebe dein Progi mal aus dem Bild heraus verdecke es dann und hole es dann wieder würde mich mal interessieren ob das funzt....
Hellsgore
-
hehe,
das geht alles!
hätteste wohl nicht gedacht.aber kannste ja auch selbst mal anschauen.
hau einfach ne message-box (MessageBox("Blubb");)
in die else der onpaint rein, verschieb oder minimier,
whatever den dialog.
dann siehste genau wann die aufgerufen wird.
aber da erzähl ich dir wahrscheinlich nix neues
Bis baldi