Question

Faire un projet dans Win32 en C ++, tentant de doubler l'image en cours de dessin, mais je reçois un écran noir avec les bons bitmaps dessinés dessus. Cela provoque également ma condition WM_MOUSEMOVE, qui traîne un bitmap avec votre curseur pour ne pas dessiner le bitmap. Le code pour la peinture est ci-dessous: la peinture () est appelée dans WNDProc sous WM_Paint, le défilement est la position de la barre de défilement, inutilisée jusqu'à présent.

int paint(HWND hWnd, HINSTANCE hInst, RECT clientRect, std::vector<Measure> *measures, int scroll)
{
int x = 90;
hdc = BeginPaint(hWnd, &ps);
hdcmem = CreateCompatibleDC(hdc);
HBITMAP hbmScreen = CreateCompatibleBitmap(hdc, clientRect.right, clientRect.bottom);
SelectObject(hdcmem,hbmScreen); 
/*these functions just create the bitmaps into hdcmem*/
drawStaff(hWnd, hInst, clientRect, x, 0);
drawKey(hWnd, hInst, clientRect, x, (*measures)[0], 0);
drawTime(hWnd, hInst, clientRect, x, (*measures)[0], 0);
drawNotes(hWnd, hInst, clientRect, measures, x);
    BitBlt(hdc, 0, 0, clientRect.right, clientRect.bottom, hdcmem, 0, 0, SRCCOPY);
ReleaseDC(hWnd, hdcmem);
return 0;
}
Était-ce utile?

La solution

Vous devez remplir le bitmap avec quelle que soit votre couleur d'arrière-plan avant de dessiner vos autres graphiques. Si la mémoire me sert correctement, les bitmaps sont remplis de noir par défaut lorsqu'ils sont créés.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top