是哪里出了问题呢,大家帮忙看一下
void CColorToGrayDoc::OnFileSave()
{
// TODO: Add your command handler code here
CFile file;
CString filename;
CFileDialog dlg(FALSE,"BMP",NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"BMP Files (*.bmp)|*.bmp|All Files (*.*)|*.*||");
if(dlg.DoModal() == IDOK)
{
filename=dlg.GetPathName();
if(file.Open(filename,CFile::modeCreate|CFile::shareDenyNone,NULL)==0)
{
//建立文件失败
AfxMessageBox("无法保存文件!",MB_OK,0);
return;
}
//文件头
BITMAPFILEHEADER bf;
//填写文件数据的内容
bf.bfType=0X4d42;//数据类型为'BM'
bf.bfReserved1 =0;
bf.bfReserved2 =0;//保留字'0'
bf.bfOffBits =(DWORD)sizeof(BITMAPFILEHEADER)+(DWORD)sizeof(BITMAPINFOHEADER)+(DWORD)numQuad*sizeof(RGBQUAD);
bf.bfSize =bf.bfOffBits +pbi->bmiHeader.biSizeImage; //将文件头、位图信息和像素组写入磁盘文件
file.Write (&bf,sizeof(BITMAPFILEHEADER));
file.Write (&pbi,sizeof(BITMAPINFOHEADER)+numQuad*sizeof(RGBQUAD));
file.Write (&pbi->bmiHeader,pbi->bmiHeader.biSizeImage); //关闭文件
file.Close (); }
void CColorToGrayDoc::OnFileSave()
{
// TODO: Add your command handler code here
CFile file;
CString filename;
CFileDialog dlg(FALSE,"BMP",NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"BMP Files (*.bmp)|*.bmp|All Files (*.*)|*.*||");
if(dlg.DoModal() == IDOK)
{
filename=dlg.GetPathName();
if(file.Open(filename,CFile::modeCreate|CFile::shareDenyNone,NULL)==0)
{
//建立文件失败
AfxMessageBox("无法保存文件!",MB_OK,0);
return;
}
//文件头
BITMAPFILEHEADER bf;
//填写文件数据的内容
bf.bfType=0X4d42;//数据类型为'BM'
bf.bfReserved1 =0;
bf.bfReserved2 =0;//保留字'0'
bf.bfOffBits =(DWORD)sizeof(BITMAPFILEHEADER)+(DWORD)sizeof(BITMAPINFOHEADER)+(DWORD)numQuad*sizeof(RGBQUAD);
bf.bfSize =bf.bfOffBits +pbi->bmiHeader.biSizeImage; //将文件头、位图信息和像素组写入磁盘文件
file.Write (&bf,sizeof(BITMAPFILEHEADER));
file.Write (&pbi,sizeof(BITMAPINFOHEADER)+numQuad*sizeof(RGBQUAD));
file.Write (&pbi->bmiHeader,pbi->bmiHeader.biSizeImage); //关闭文件
file.Close (); }
//将文件头、位图信息和像素组写入磁盘文件
file.Write (&bf,sizeof(BITMAPFILEHEADER));
//file.Write (&pbi,sizeof(BITMAPINFOHEADER)+numQuad*sizeof(RGBQUAD));
//file.Write (&pbi->bmiHeader,pbi->bmiHeader.biSizeImage);
不应该有这个问题。
换个名字如xyz.bmp