Ich habe eine Funktion, die ein Fenster in einer Schleife verschieben kann
Problem dabei ist, dass er innerhalb der Schleife die Paint Message nicht ausführt, sondern erst hinterher, dazu hat mir ein freundlicher Helfer hier im Forum erklärt, ich muss machen:
Das klappt prima, und ich habe sogar begriffen warum
Nun möchte ich fast das Gleiche mit einem Fenster machen, nur dass es immer nur neu gezeichnet werden soll, ohne es zu verschieben
Dummerweise lässt WM_PAINT sich nicht als Message senden, bzw. funktioniert nicht immer (MSDN sagt auch, soll man nicht machen)
Also verwende ich InvalidateRect(), was aber keine Message ist, sprich ich kann da noch so lange Peek´en, er zeichnet das Fenster erst neu, wenn die Schleife durch ist
Kann mir jemand auf die Sprünge helfen?
Code:
for(int i = 0; i < 100; i++)
{
int newleft = 0;
int newtop = 0:
// berechne neue Position
MoveWindow(myWindow, newleft, newtop, 100, 100, true);
}
Problem dabei ist, dass er innerhalb der Schleife die Paint Message nicht ausführt, sondern erst hinterher, dazu hat mir ein freundlicher Helfer hier im Forum erklärt, ich muss machen:
Code:
MSG msg;
for(int i = 0; i < 100; i++)
{
int newleft = 0;
int newtop = 0:
// berechne neue Position
MoveWindow(myWindow, newleft, newtop, 100, 100, true);
while(PeekMessage(&msg, myWindow, 0, 0, PM_NOREMOVE))
{
GetMessage(&msg, myWindow, 0, 0 );
TranslateMessage( &msg );
DispatchMessage( &msg );
}
}
Das klappt prima, und ich habe sogar begriffen warum
Nun möchte ich fast das Gleiche mit einem Fenster machen, nur dass es immer nur neu gezeichnet werden soll, ohne es zu verschieben
Dummerweise lässt WM_PAINT sich nicht als Message senden, bzw. funktioniert nicht immer (MSDN sagt auch, soll man nicht machen)
Also verwende ich InvalidateRect(), was aber keine Message ist, sprich ich kann da noch so lange Peek´en, er zeichnet das Fenster erst neu, wenn die Schleife durch ist
Code:
for(int i = 0; i < 100; i++)
{
// berechne irgendwas
InvalidateRect(myWindow, NULL, false);
// Hier müsste er dann das Fenster neu zeichnen, bevor die Schleife weiter macht
// aber wie?
}
Kann mir jemand auf die Sprünge helfen?