Win Api:Objekte verschieben

marrrc

Grünschnabel
Moin.
Ich hab folgende Probleme:
1)Ich will ein Rechteck auf Tastendruck verschieben.Dabei flackert es.Hab gelesen, dass man mit Invalidaterect(hWnd,NULL ); dieses verhindern kann.Nur dann bewegen sich die Objekte erst wenn die Taste wieder losgelassen wurde,es soll aber direkt geschehen.
Wie kann ich das ändern?

2)Wenn man eine Taste drückt wird ein Schritt gemacht und danach kommt eine Pause bevor die Objekte weiter verschoben werden.Das soll aber nicht passieren.

Code:
case WM_KEYDOWN:
						GetKeyboardState(cBuf);
						if ( cBuf['W']&0x80)
						{
							InvalidateRect(hWnd, &rect1, TRUE);
							iY1-=iTempo;
						}
						else if ( cBuf['S']&0x80)
						{
							InvalidateRect(hWnd, &rect1, TRUE);
							iY1+=iTempo;							
						}
	
						if ( cBuf[VK_UP]&0x80)
						{
							InvalidateRect(hWnd, &rect2, TRUE);
							iY2-=iTempo;							
						}
						else if ( cBuf[VK_DOWN]&0x80)
						{
							InvalidateRect(hWnd, &rect2, TRUE);
							iY2+=iTempo;							
						}

Ich hoffe,dass ihr mir helfen könnt.
 
moin


Weiso holst dir die die Benutzereingabe mit GetKeyboardState?
Warum nicht mit nem weitern switch(wParam).....


mfg
umbrasaxum
 
Um das Flackern zu vermeiden, solltest du mit BitBlit() arbeiten, wobei du vorher in einen Speicher-DeviceContext zeichnen solltest.

Gruß Daniel
 
Zurück