Устранить мерцание при рисовании
LRESULT _stdcall WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM
lParam)
{
const INT step = 5;
switch (uMsg) {
case WM_DESTROY:
{
PostQuitMessage(0);
break;
}
case WM_KEYDOWN:
const tagRECT rect(XE - step, YE - step, XE + 50 + step, YE + 50 + step);
switch (wParam) {
case VK_LEFT: // Обрабатывает клавишу LEFT ARROW (Стрелка влево)
if (XE > 400) {
XE -= step;
InvalidateRect(hwnd, &rect, TRUE);
}
break;
case VK_RIGHT: // Обрабатывает клавишу RIGHT ARROW (Стрелка вправо)
if (XE < 900 - 50) {
XE += step;
InvalidateRect(hwnd, &rect, TRUE);
}
break;
case VK_UP: // Обрабатывает клавишу UP ARROW (Стрелка вверх)
if (YE > 200) {
YE -= step;
InvalidateRect(hwnd, &rect, TRUE);
}
break;
case VK_DOWN: // Обрабатывает клавишу DOWN ARROW (Стрелка вниз)
if (YE < 600 - 50) {
YE += step;
InvalidateRect(hwnd, &rect, TRUE);
}
break;
default:
break;
}
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hwnd, &ps);
Graphics g(hdc);
Pen pen(Color(255, 255, 0, 255)), pd(Color(255, 0, 0, 0), 3);
SolidBrush sb(Color(192, 255, 0, 0)), sd(Color(255, 0, 0));
g.DrawLine(&pen, 0, 0, 500, 100);
g.FillRectangle(&sb, Rect(0, 0, 100, 100));
g.DrawRectangle(&pd, Rect(400, 200, 500, 400));
g.FillEllipse(&sd, Rect(XE, YE, 50, 50));
EndPaint(hwnd, &ps);
break;
}
default: return DefWindowProcW(hwnd, uMsg, wParam, lParam);
}
}
У меня проблема в том, что при нажатии клавиш происходит перерисовывание с мерцанием, подскажите, как полностью убрать мерцание; вверху метод, где происходит движение и рисование объекта.