?
Hallo !
So ein ähnliches Problem hatte ich auch mal.
Es liegt daran das Windows nur eine begrenzet Anzahl an HBRUSH HPENS etc. öffnen kann.
Du hast zwar mit deleteObject(..) die Handles versucht zu löschen, aber sie waren noch immer geladen, deswegen wurden sie gar nicht gelöscht, du hättest vorher select(..hOldPen) und dann deleteObject(hPen) machen müssen.
zB:
hOldBrush = (HBRUSH)SelectObject(hMemDC,CreateSolidBrush(GreenCol));
hOldPen=(HPEN)SelectObject(hMemDC,CreatePen(1,1,frmCol));
RoundRect(hMemDC,5,35,15,55,15,15);
hOldBrush = (HBRUSH)SelectObject(hMemDC,CreateSolidBrush(BlueCol));
hOldPen=(HPEN)SelectObject(hMemDC,CreatePen(1,1,frmCol));
RoundRect(hMemDC,5,60,15,80,15,15);
In der 2. Zeile weist du hOldPen ein Handle zu, weiter unten weist du hOldPen erneut ein Handle zu, das erste Handle wird nie gelöscht, du kannst es auch nicht mehr löschen weil du den Zeiger zu dem Handle nicht mehr hast.