为什么小弟我保存的bmp图像中一个像素都没有?大家帮忙看看吧,多谢

为什么我保存的bmp图像中一个像素都没有?大家帮忙看看吧,谢谢
共有三个函数与之相关:
CMyDoc::CMyDoc()
{
//   在doc的构造函数里初始化了一个BITMAPINFO
     
m_pBitmapInfo   =   (BITMAPINFO   *)   new   BYTE[sizeof(BITMAPINFO)];
        m_pBitmapInfo-> bmiHeader.biSize   =   sizeof(BITMAPINFOHEADER);
        m_pBitmapInfo-> bmiHeader.biPlanes   =   1;
        m_pBitmapInfo-> bmiHeader.biBitCount   =   8;//8位格式
        m_pBitmapInfo-> bmiHeader.biCompression   =   0;
        m_pBitmapInfo-> bmiHeader.biSizeImage   =   0;
        m_pBitmapInfo-> bmiHeader.biXPelsPerMeter   =   0;
        m_pBitmapInfo-> bmiHeader.biYPelsPerMeter   =   0;
        m_pBitmapInfo-> bmiHeader.biClrUsed   =   0;
        m_pBitmapInfo-> bmiHeader.biClrImportant   =   0;
        m_pBitmapInfo-> bmiHeader.biWidth   =   0;
        m_pBitmapInfo-> bmiHeader.biHeight   =   0;
}
///从一个采集卡里获得宽度,高度和每行字节数信息,应该没有错,因为图像能够显示。
void   CMyDoc::GetBitmapInfo()
{
int   SizeX=GetCurrentCamera()-> GetImageWidth();//宽度
int   SizeY=GetCurrentCamera()-> GetImageHeight();//高度
        int   Bitys=GetCurrentCamera()-> GetImageBytes();//每行字节数

m_pBitmapInfo-> bmiHeader.biWidth   =   Bitys   /   (   m_pBitmapInfo-> bmiHeader.biBitCount   /   8);     //   Width   =   Pitch(bytes)   divided   by   the   number   of   bytes   per   pixel
m_pBitmapInfo-> bmiHeader.biHeight   =   -SizeY   ;
}
//这是一个按钮的相应函数,希望点击后存下图像,图像是存了,可以打开时警告:   图像必须大于一个像素,打开后,里面什么也没有,就是说一个像素都没有存上,为什么呢。
void   CMyDoc::OnGrab()  
{      
int   size=0-m_pBitmapInfo-> bmiHeader.biWidth*m_pBitmapInfo-> bmiHeader.biHeight;//因为是8位,就直接相乘了
  m_pBitmapInfo-> bmiHeader.biSizeImage   =   size;

  BITMAPFILEHEADER       bfh;       //这是文件头
bfh.bfReserved1=bfh.bfReserved2=0;      
bfh.bfType=((WORD)( 'M ' < <       8)| 'B ');      
bfh.bfSize=54+256*sizeof(RGBQUAD)+m_pBitmapInfo-> bmiHeader.biSizeImage;
bfh.bfOffBits=54+256*sizeof(RGBQUAD);      

RGBQUAD   rgbq[256];
for(int   i=0;i <256;i++)
{  
            rgbq[i].rgbBlue=i;
    rgbq[i].rgbGreen=i;
    rgbq[i].rgbRed=i;
    rgbq[i].rgbReserved=0;
}//从图像采集卡的得到的是裸的8位图像的数据地址,我想以灰度图显示,就自己写了一个颜色板。
   
CString       name       =       "C:\\picttest.bmp ";      
  CFile       bf;      
                    if(bf.Open(name,CFile::modeCreate|CFile::modeWrite)){      
                                    bf.WriteHuge(&bfh,sizeof(BITMAPFILEHEADER));      
                                    bf.WriteHuge(&m_pBitmapInfo-> bmiHeader,sizeof(BITMAPINFOHEADER));