Я пытаюсь переместить прямоугольник, но я озадачен. Я просто создал прямоугольник, но после того, как я переместил его на 2 шага, в результате получилось две копии. Раньше я писал похожий код, но на этот раз что-то пошло не так.
точно так же
начало:
b
двигаться на два шага:
b
b
b
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc ;
static int x_left,y_top,x_right,y_bottom;
PAINTSTRUCT ps ;
switch (message)
{
case WM_CREATE:
hdc = GetDC (hwnd) ;
x_left=100;
x_right=300;
y_top=50;
y_bottom=200;
Rectangle(hdc,x_left,y_top,x_right,y_bottom);
ReleaseDC (hwnd, hdc);
return 0;
case WM_KEYDOWN:
switch(wParam){
case VK_DOWN:
y_top+=160;
y_bottom+=160;
break;
default:break;
}
InvalidateRect(hwnd,NULL, FALSE);
break;
case WM_PAINT:
hdc=BeginPaint(hwnd,&ps);
Rectangle(hdc,x_left,y_top,x_right,y_bottom);
EndPaint(hwnd,&ps);
return 0;
case WM_DESTROY :
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}