- SetIsotropic(hdc, pClockData);
- DrawClock(hdc, pClockData);
- DrawHands(hdc, &pClockData->stPrevious, TRUE);
+
+ /* Use an offscreen dc to avoid flicker */
+
+ dcMem = CreateCompatibleDC(hdc);
+ bmMem = CreateCompatibleBitmap(hdc, ps.rcPaint.right - ps.rcPaint.left, ps.rcPaint.bottom - ps.rcPaint.top);
+
+ bmOld = SelectObject(dcMem, bmMem);
+ SetViewportOrgEx(dcMem, -ps.rcPaint.left, -ps.rcPaint.top, NULL);
+ FillRect(dcMem, &ps.rcPaint, GetSysColorBrush(COLOR_BTNFACE));
+
+ SetIsotropic(dcMem, pClockData);
+ DrawClock(dcMem, pClockData);
+ DrawHands(dcMem, &pClockData->stPrevious, TRUE);
+
+ /* Blit the changes to the screen */
+ BitBlt(hdc,
+ ps.rcPaint.left, ps.rcPaint.top,
+ ps.rcPaint.right - ps.rcPaint.left, ps.rcPaint.bottom - ps.rcPaint.top,
+ dcMem,
+ ps.rcPaint.left, ps.rcPaint.top,
+ SRCCOPY);
+
+ SelectObject(dcMem, bmOld);
+ DeleteObject(bmMem);
+ DeleteObject(dcMem);