CDialog neu zeichnen
-
Hallo
ich habe eine Dialog basierte Anwendung und moechte dass dieser Dialog alle paar Sekunden neugezeichnet wird.
Also hab ich einen Timer gestartet. Nur wie implementier ich die Funktion, siehe unten, so dass der Dialog neu
gezeichnet wird wenn das WM_TIMER "Signal" ausgegeben wird?
Ich kenn das nur bei einem DocView Modell, hier wirds in der Ansichtsklasse eingerichtet!
Hier hab ich aber eine Dialog basierte Anwendung!void CTestDlg::OnTimer(UINT nIDEvent) { // TODO: Code für die Behandlungsroutine für Nachrichten hier einfügen und/oder Standard aufrufen CDialog::OnTimer(nIDEvent); }
-
Du musst den Code in die OnPaint() schreiben, und diese Aufrufen.
Oder du holst dir einen Zeiger auf den Device Context, und speicherst diesen in einer Membervariable.Devil
-
UpdateWindow();
Wieso willst du deinen Dialog neu zeichnen ?
Gehts nicht anders ?
-
@Unix-Tom
Da ich eine Anwendung habe, die Daten umsetzt und sich innerhalb Ihrer Schleife nicht zurueckmeldet. Damit der Dialog aber immer wieder angezeigt wird, moechte ich ihn öfters neu zeichnen lassen
-
InvalidateRect
-
Also das Neuzeichne eines Dialogs ist eine schleichte Lösung da du hier sehr viele Resourcen verbrauchst.
Du kannst jetzt sagen "Das ist mir egal !"
Da wir hier aber versuchen gute Software zu schreiben, würde ich Threads verwenden.
-
hab ich schon mal probiert, und waere auch die loesung, komme aber damit nicht zurecht: da die anwedung bereits geschrieben wurde muesste ich zu viele dinge aendern!!
-
Du musst dafür nicht viel ändern.
Lediglich eine von CWindthread abgeleitete Klasse und in die RUN-Methode dann deinen Code.
Im Timer schaust du nach ob der Thread noch läuft.