拷屏好像必须要有个Bitmap对象,不然无法复制成功,要么Load一个位图,要么CreateCompatibleBitmap创建一个兼容位图。
另:ReleaseDC 对应与 GetDC
DeleteDC 对应与 CreateCompatibleDC
其他对象应该有类似对应关系,Get对应Release,Create对应Delete
void
CMainDlg::DoPaint()
... {
HDC dc = GetDC();
HDC memDC = CreateCompatibleDC(dc);
//要用BitBlt从内存DC拷贝到设备DC似乎必须要有个Bitmap对象
HBITMAP hBMP = CreateCompatibleBitmap(memDC, 240, 320);
SelectObject(memDC,hBMP);
RECT rc = ...{0, 0, 100, 100};
FillRect( memDC, &rc, CreateSolidBrush( RGB(0, 0, 0) ) );
DrawText(memDC, L"BitBlt bitmap from memory to screen", -1, &rc, DT_CENTER|DT_VCENTER);
BitBlt(dc, 0, 0, 100, 100, memDC, 0, 0, SRCCOPY);
DeleteObject(hBMP);
DeleteDC(memDC);
ReleaseDC(dc);
}
... {
HDC dc = GetDC();
HDC memDC = CreateCompatibleDC(dc);
//要用BitBlt从内存DC拷贝到设备DC似乎必须要有个Bitmap对象
HBITMAP hBMP = CreateCompatibleBitmap(memDC, 240, 320);
SelectObject(memDC,hBMP);
RECT rc = ...{0, 0, 100, 100};
FillRect( memDC, &rc, CreateSolidBrush( RGB(0, 0, 0) ) );
DrawText(memDC, L"BitBlt bitmap from memory to screen", -1, &rc, DT_CENTER|DT_VCENTER);
BitBlt(dc, 0, 0, 100, 100, memDC, 0, 0, SRCCOPY);
DeleteObject(hBMP);
DeleteDC(memDC);
ReleaseDC(dc);
}