使用下面的程序创建的位图在windows的照片查看器中无法打开,求高手解答       char imgBuff[320*240];
memset(imgBuff,255,320*240); for(int r=0;r<(320*240);r++)
{
imgBuff[r]=255;
}
BITMAPFILEHEADER bfh= {0}; bfh.bfOffBits= sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFO); bfh.bfType= DIB_HEADER_MARKER;
bfh.bfSize=bfh.bfOffBits+320*240;
bfh.bfReserved1=0;
bfh.bfReserved2=0; BITMAPINFO* bmif=(BITMAPINFO*)new BYTE[sizeof(BITMAPINFOHEADER)+256*sizeof(RGBQUAD)];
bmif->bmiHeader.biBitCount=8;
bmif->bmiHeader.biClrImportant=0;
bmif->bmiHeader.biClrUsed=0;
bmif->bmiHeader.biCompression=BI_RGB;
bmif->bmiHeader.biHeight=240;
bmif->bmiHeader.biWidth=320;
bmif->bmiHeader.biPlanes=1;
bmif->bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
bmif->bmiHeader.biSizeImage=320*240;
bmif->bmiHeader.biXPelsPerMeter=0;
bmif->bmiHeader.biYPelsPerMeter=0;

for(int pc=0;pc<256;pc++)
{
bmif->bmiColors[pc].rgbBlue=pc;
bmif->bmiColors[pc].rgbGreen=pc;
bmif->bmiColors[pc].rgbRed=pc;
bmif->bmiColors[pc].rgbReserved=0;
} DWORD dwBytesRead= 0;
CString strName="imgOrig.bmp";
HANDLE hFile = ::CreateFile(LPCTSTR(strName),
GENERIC_WRITE,
0,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL
); if (hFile == INVALID_HANDLE_VALUE)
{
MessageBox("创建文件失败!");
return;
}
else
{
::WriteFile(hFile, &bfh, sizeof(BITMAPFILEHEADER), &dwBytesRead,NULL);
::WriteFile(hFile, bmif, sizeof(BITMAPINFO), &dwBytesRead,NULL);
::WriteFile(hFile,imgBuff,sizeof(imgBuff),&dwBytesRead,NULL);
}

CloseHandle(hFile);