lors du dessin dans WM_PAINT, au lieu de dessiner dans le hdc donné par BeginPaint, créer un DC en mémoire et dessiner dedans :
PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, &ps); RECT rcClient; GetClientRect(hWnd, &rc);
HDC hMemDC = CreateCompatibleDC(hdc); HBITMAP hMemBmp = CreateCompatibleBitmap(hdc, rcClient.right, rcClient.bottom); HBITMAP hOldBmp = (HBITMAP)SelectObject(hMemDC, hMemBmp);
FillRect(hMemDC, &rcClient, (HBRUSH)GetStockObject(WHITE_BRUSH);
// dessiner en utilisant hMemDC ....
// recopier à l'écran BiBlt(hdc, 0, 0, rcClient.right, rcClient.bottom, hMemDC, 0, 0, SRCCOPY);
// libération SelectObject(hMemDC, hOldBmp); DeleteObject(hMemBmp); DeleteDC(hMemDC); EndPain(hWnd, &ps);
|