文件操作是出现 “对一未命名文件 查找失败” 急急急!!!
我用MFC做的一个位图文件解析程序,在进行测试时就出现这个错误,在网上看了很多地方,试过好多方法还是一样
文件open成功了,但一读到seek或read语句就出现“对一未命名文件 查找失败” 求救
下面是源程序:
BITMAPFILEHEADER bmFileHeader;
BITMAPINFOHEADER bmInfoHeader;
DWORD i;
DWORD j;
int flag;
WORD bfType;// 文件类型
DWORD bfSize;// 图像文件的大小
DWORD bfOffBits;// 图像数据偏移
DWORD biWidth;// 图像宽度
DWORD biHeight;// 图像高度
WORD biBitCount;// 每个像素所需的位数
tagRGBQUAD biRGB;// 声明颜色表
DWORD begin;// 图像数据偏移开始处
int index = 0;// 绘图指针
int palette = 54;// 指向调色板地址
CFileDialog fileDlg(TRUE);
fileDlg.m_ofn.lpstrTitle="打开位图文件";
fileDlg.m_ofn.lpstrFilter="BMP Files(*.bmp)\0*.bmp\0All Files(*.*)\0*.*\0\0";
if(IDOK==fileDlg.DoModal())
{
CFile bmfile;
if(bmfile.Open(fileDlg.GetPathName(),CFile::modeRead | CFile::typeBinary | CFile::shareDenyRead | CFile::shareDenyWrite))
{
MessageBox("打开文件成功");
bmfile.Seek(0L,CFile::begin);
bmfile.Read(&bfType,2);
if(0x4D42!=bfType)
{
MessageBox("请选择bmp位图文件!");
return;
}
}
else
MessageBox("打开位图文件失败!");
//CFile bmfile(fileDlg.GetPathName(),CFile::modeRead);
bmfile.Seek(0L,CFile::begin);
bmfile.Read(&bmFileHeader,14);
bmfile.Seek(14L,CFile::begin);
bmfile.Read(&bmInfoHeader,40);
bfType=bmFileHeader.bfType;
bfSize=bmFileHeader.bfSize;
bfOffBits=bmFileHeader.bfOffBits;
biWidth=bmInfoHeader.biWidth;
biHeight=bmInfoHeader.biHeight;
biBitCount=bmInfoHeader.biBitCount;
flag=(int)(4-biWidth%4)%4;
begin=bfOffBits;
CDC *pDC=GetDC();
if(8==biBitCount)
for(i=0;i<biHeight;i++)
{
for(j=0;j<biWidth;j++)
{
bmfile.Seek(begin,CFile::begin);
bmfile.Read(&index,1);
bmfile.Seek(palette+4*index,CFile::begin);
bmfile.Read(&biRGB,4);
pDC->SetPixel(j,biHeight-i,RGB(biRGB.rgbRed,biRGB.rgbRed,biRGB.rgbRed));
begin++;
}
begin+=flag;
}
}
[解决办法]
lz单步调式一把看看