J'ai des problèmes avec l'utilisation de BitBlt dans ce programme. Vous redimensionnez la fenêtre et l'ellipse est redimensionnée avec. Bien sûr, avec la méthode hdc normale, il est saccadé et flickery. J'ai essayé la méthode BitBlt, mais cela ne fonctionne pas non plus (probablement parce que je le fais mal). Quelqu'un peut-il réparer ce que je ne peux pas faire? ThanxProblème BitBlt GDI
bool sizing; //global
case WM_PAINT:
{
RECT rect;
GetClientRect(hwnd, &rect);
hdc = BeginPaint(hwnd, &ps);
mem = CreateCompatibleDC(hdc);
SelectObject(mem, GetStockObject(HOLLOW_BRUSH));
if(sizing)
{
Ellipse(mem,rect.left, rect.top, rect.right, rect.bottom);
}
BitBlt(hdc, rect.left, rect.top, rect.left - rect.right, rect.top -rect.bottom , mem, rect.left, rect.top, SRCCOPY);
DeleteDC(mem);
EndPaint(hwnd, &ps);
break;
}
case WM_SIZE:
sizing = true;
break;
Vous devrez gérer WM_ERASEBKGND pour éviter le scintillement. –