首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

文件操作是出现 “对一未命名文件 查找失败” 急解决办法

2012-03-15 
文件操作是出现 “对一未命名文件查找失败” 急急急!!!我用MFC做的一个位图文件解析程序,在进行测试时就出现

文件操作是出现 “对一未命名文件 查找失败” 急急急!!!
我用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单步调式一把看看

热点排行