19,444
社区成员




HDC hDc = CreateCompatibleDC(NULL);
BYTE *lpvBits = NULL;
int nRet;
BITMAPINFO bmpInfo;
ZeroMemory(&bmpInfo,sizeof(bmpInfo));
bmpInfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
/* 第一次调用GetDIBits获得bmpInfo */
nRet = ::GetDIBits(hDc, sm.hBitmap, 0, 0, NULL, &bmpInfo, DIB_RGB_COLORS);
if (nRet == 0) {
nRet = GetLastError();
TRACE( _T("GetDIBits for bmpInfo failed %d\n"), nRet);
}
lpvBits= new BYTE[bmpInfo.bmiHeader.biSizeImage];
if (NULL == lpvBits) {
nRet = -1;
TRACE( _T("Allocate memory for lpvBits failed\n"));
}
nRet = GetBitmapBits(sm.hBitmap,bmpInfo.bmiHeader.biSizeImage,lpvBits);
/* 第二次调用GetDIBits获得位图数据 */
//nRet = ::GetDIBits(hDc, sm.hBitmap, 0, bmpInfo.bmiHeader.biHeight, lpvBits, &bmpInfo, DIB_RGB_COLORS);
if (nRet == 0) {
nRet = GetLastError();
TRACE( _T("GetDIBits for lpvBits failed %d\n"), nRet);
}