Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Fenster aktualisieren...?!

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
22.08.2004, 19:05 Uhr
~hardixy
Gast


Hi,
habe zwei Fenster erstellt in Visual C.
Fenster 1 ist das Hauptfenster und soll eine OpenGL-Welt laden. Dies funzt soweit auch schon.
Fenster 2 soll die Steuerung von Fenster 1 übernehmen, dh. Interaktivität von der OpenGL-Szene ermöglichen. Fenster 2 habe ich als Child von Fenster 1 angelegt.

Nun mein Problem:
Wenn die Anwendung startet, werden beide Fenster gezeichnet. Jedoch wird danach nur noch Fenster 2 neu gezeichnet... Fenster 1 aktualisiert sich nicht mehr. Wenn ich Fenster 2 verschiebe, wird Fenster 1 jedoch akualisiert.
Genau dieses Phenomän möchte ich immer erreichen...Fenster 1 soll mir immer hochaktuell angezeigt werden.

Hab schon überlegt, dies mit einem Timer zu realisieren... jedoch gibt es sicher irgendeine elegantere und einfachere Lösung.

Bitte um professonelle Hilfe.
Danke. hardixy
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
22.08.2004, 22:37 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


du zeichnest wahrscheinlich per OnDraw in deinem Fenster 1 oder? wenn ja, einfach am ende von OnDraw "Invalidate(FALSE)" aufrufen, das ruft OnDraw erneut auf, blockiert aber nicht die Nachrichtenschleife
--
class God : public ChuckNorris { };

Dieser Post wurde am 22.08.2004 um 22:38 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
23.08.2004, 07:18 Uhr
~hardixy
Gast


Danke für die Antwort. Der Ansatz scheint schon richtig zu sein, doch irgendwas habe ich immernoch nicht richtig gemacht!!!
Ich habe es nun mal probiert mit InvalidateRect(NULL, NULL, FALSE) in der OnDraw()-Abfrage von Fenster 1 (Hauptfenster). Da gab es gar keine Änderungen. Dieser Aufruf wird garnicht erst verarbeitet, sonst würde er mein Fenster ja auch wieder neu zeichnen.
Bei OnDraw() von Fenster 2(Steuerfenster) habe ich InvalidateRect(NULL, NULL, FALSE) auch getestet und zumindest schon mal einen Teilerfolg erzielt. Beide Fenster flackern nun tierisch und mein Laptop stürzt des öfteren ab, but er aktualisiert Fenster 1(Hauptfenster)... das ist schon mal was.

Wie kann ich nun vorgehen, dass nur noch Fenster 1(Hauptfenster) akualisiert wird und mein Rechner wieder stabil läuft????
Mit der variante InvalidateRect(fenster1, NULL, FALSE) habe ich es auch schon im Fenster 2 OnDraw() probiert, jedoch passiert da überhaupt nix.

Tja, nun bin ich sprachlos und offen für Tipps.

Bitte um schnelle Hilfe, da ich sonst nicht weiter komme.
Best Regards.
hardixy
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
23.08.2004, 09:35 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


du musst einfach Invalidate(FALSE) nehmen, nicht InvalidateRect.

also so:


C++:
void CFenster1::OnDraw(...)
{
  // Dein Zeichencode
  //...

  Invalidate(FALSE);
}

--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: