从Cstatic中保存BMP文件出现错误
我要将CStatic中的图像保存到BMP文件,保存后,浏览BMP图像,图像是全黑的,没有其它颜色,不知道是问什么?下面是我的代码:
LPBITMAPINFO lpbmih = new BITMAPINFO();
CDC* pDC = m_Show.GetDC();(m_Show是一个CStatic对象)
CRect rect;
m_Show.GetClientRect(rect);
int nHeight = rect.Height();
int nWidth = (((rect.Width() * 8) + 31) / 32) * 4;
lpbmih->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
lpbmih->bmiHeader.biWidth = nWidth;
lpbmih->bmiHeader.biHeight = nHeight;
lpbmih->bmiHeader.biPlanes = 1;
lpbmih->bmiHeader.biBitCount = 24;
lpbmih->bmiHeader.biCompression = BI_RGB;
lpbmih->bmiHeader.biSizeImage = nWidth * nHeight * 3;
lpbmih->bmiHeader.biXPelsPerMeter = 0;
lpbmih->bmiHeader.biYPelsPerMeter = 0;
lpbmih->bmiHeader.biClrUsed = 0;
lpbmih->bmiHeader.biClrImportant = 0;
HDC hdc , hdcMem;
HBITMAP hBitMap = NULL;
CBitmap *pBitMap = NULL;
CDC* pMemDC = NULL;
BYTE* pBits;
hdc = pDC->m_hDC;
hdcMem = CreateCompatibleDC(hdc);
hBitMap = CreateDIBSection(hdcMem,lpbmih,DIB_PAL_COLORS,(void**)&pBits,NULL,0);
pBitMap = new CBitmap();
pBitMap->Attach(hBitMap);
pMemDC = new CDC();
pMemDC->Attach(hdcMem);
LPBITMAPFILEHEADER bmfh = new BITMAPFILEHEADER();
bmfh->bfType = 0x4d42;
bmfh->bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);
bmfh->bfSize = bmfh->bfOffBits + nWidth * nHeight * 3;
CString str;
str.Format("c:/%d.bmp",filenum);
CFile file;
if(file.Open(str,CFile::modeCreate | CFile::modeReadWrite))
{
file.Write(bmfh,sizeof(BITMAPFILEHEADER));
file.Write(&(lpbmih->bmiHeader),sizeof(BITMAPINFOHEADER));
file.Write(pBits,nWidth * nHeight * 3);
file.Close();
}
filenum += 1;