1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| HDC memHDC = CreateCompatibleDC((HDC)Hdc);
HBITMAP memBmp = CreateCompatibleBitmap(memHDC, r.right, r.bottom);
HBITMAP oldBmp = (HBITMAP) SelectObject(memHDC, memBmp);
DrawOn(memHDC);
SIZE sizeBmp = GetBmpSize(memBmp);
if(sizeBmp.cy < 0)
return;
LPVOID lpMem = VirtualAlloc(NULL, 4*sizeBmp.cx*sizeBmp.cy, MEM_COMMIT, PAGE_READWRITE);
if(lpMem == NULL)
return;
BITMAPINFO bi;
ZeroMemory(&bi, sizeof(BITMAPINFO));
bi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
bi.bmiHeader.biPlanes = 1;
bi.bmiHeader.biBitCount = 32;
bi.bmiHeader.biWidth = sizeBmp.cx;
bi.bmiHeader.biHeight = sizeBmp.cy;
bi.bmiHeader.biCompression = BI_RGB;
int nResult = GetDIBits(memHDC, memBmp, 0, sizeBmp.cy, lpMem, &bi, DIB_RGB_COLORS);
if(nResult == 0)
{
VirtualFree(lpMem, 0, MEM_RELEASE);
return;
}
HBITMAP bmp = CreateCompatibleBitmap((HDC)Hdc, r.right, r.bottom);
if (!SetDIBits((HDC)Hdc, bmp, 0, sizeBmp.cy, lpMem, &bi, DIB_RGB_COLORS))
return;
VirtualFree(lpMem, 0, MEM_RELEASE); |
Partager