为什么生成的BMP文件是一片全黑?
void CMyDialog::GetPicturePart(CString PictName,int x,int y)
{
CDC *pTheCurrentDC;
CDC MyDC;
CDC TempDC;
CBitmap TheLoadBmp;
CBitmap *pTempBMP;
CBitmap TempBMP;
BITMAP bi;
//载入图片
HBITMAP hBmp = (HBITMAP)::LoadImage(NULL,PictName,
IMAGE_BITMAP,0,0,
LR_LOADFROMFILE|LR_CREATEDIBSECTION);
TheLoadBmp.Attach(hBmp);
//获得当前DC
pTheCurrentDC=GetDC();
TempDC.CreateCompatibleDC(pTheCurrentDC);
TempDC.SelectObject(&TheLoadBmp);
//创建空白图片
TempBMP.CreateCompatibleBitmap(&TempDC,50,50);
MyDC.CreateCompatibleDC(pTheCurrentDC);
MyDC.SelectObject(&TempBMP);
TempBMP.GetBitmap(&bi);
//以(x,y)为左上角截取50*50的图片,并复制到上面创建的空白图片TempBMP中
MyDC.StretchBlt(0,0,50,50,&TempDC,x,y,50,50,SRCCOPY);
DWORD size=bi.bmWidthBytes*bi.bmHeight;
LPSTR lpData=(LPSTR)::GlobalAlloc(GPTR,size);
BITMAPINFOHEADER bih;
bih.biBitCount=bi.bmBitsPixel;
bih.biClrImportant=0;
bih.biClrUsed=0;
bih.biCompression=0;
bih.biHeight=bi.bmHeight;
bih.biPlanes=1;
bih.biSize=sizeof(BITMAPINFOHEADER);
bih.biSizeImage=0;
bih.biWidth=bi.bmWidth;
bih.biXPelsPerMeter=0;
bih.biYPelsPerMeter=0;
::GetDIBits((HDC)MyDC,TempBMP,0,bih.biHeight,lpData,(BITMAPINFO *)&bih,DIB_RGB_COLORS);
BITMAPFILEHEADER bfh;
bfh.bfReserved1=bfh.bfReserved2=0;
bfh.bfType=((WORD)('M'<<8)|'B');
bfh.bfSize=54+size;
bfh.bfOffBits=54;
CFile bf;
CString name="c:\\pic.bmp";
if(bf.Open(name,CFile::modeCreate|CFile::modeWrite))
{
bf.Write(&bfh,sizeof(bfh));
bf.Write(&bih,sizeof(bih));
bf.Write(lpData,size);
bf.Flush();
bf.Close();
}
::GlobalFree(lpData);
}
现在的问题是,生成的图片文件是一片全黑色,文件大小为2554字节,用ACDSee看,显示“数据源流被载断”。
请高手指点。