WTHunt 2015-09-09 13:45 采纳率: 30.8%
浏览 1671
已结题

在遍历文件中写了显示图片的代码,通过控件做显示循环除了问题,麻烦了

我想循环显示图像,在遍历文件中写了显示图片的代码,通过控件做显示循环,调试没问题,运行的时候出现ASSERT(m_hFile != INVALID_HANDLE_VALUE)这一句,设置断点之后发现if(!file.open)这句有问题,有高手能为我解答一下吗,弄了好久没弄出来,麻烦了
void CbianliDoc::OnOpenfile()
{
// 判断当前图像是否已经被改动
if (IsModified())
{
// 提示用户该操作将丢失所有当前的修改
if (MessageBox(NULL, "重新打开图像将丢失所有改动!是否继续?", "系统提示", MB_ICONQUESTION | MB_YESNO) == IDNO)
{
// 用户取消操作,直接返回
return;
}
}

CFile file;
CFileException fe;

CString strPathName;

//strPathName.Format("D:\\难点\\Image00%d.bmp",i);

CFileFind finder;
CString dir="D:\\石英提取图像";
dir+=_T("\\*.bmp");
BOOL str=finder.FindFile(dir);

while(str)
{
    str=finder.FindNextFileA();

// 获取当前文件路径
/*CString p;
p.Format("%d",str);
AfxMessageBox(p);
*/
strPathName = finder.GetFilePath();          /*"D:\\难点\\Image003.bmp";*///
GetPathName();

// 重新打开文件
if (!file.Open(strPathName, CFile::modeRead | CFile::shareDenyRead, &fe))
{
    // 失败
    ReportSaveLoadException(strPathName, &fe,
        FALSE, AFX_IDP_FAILED_TO_OPEN_DOC);

    // 返回
    return;
}


// 更改光标形状
BeginWaitCursor();

// 尝试调用ReadDIBFile()读取图像
TRY
{
    m_hDIB = ::ReadDIBFile(file);
}
CATCH (CFileException, eLoad)
{
    // 读取失败
    file.Abort();

    // 恢复光标形状
    EndWaitCursor();

    // 报告失败
    ReportSaveLoadException(strPathName, eLoad,
        FALSE, AFX_IDP_FAILED_TO_OPEN_DOC);

    // 设置DIB为空
    m_hDIB = NULL;

    // 返回
    return;
}
END_CATCH

// 初始化DIB
InitDIBData();

// 判断读取文件是否成功
if (m_hDIB == NULL)
{
    // 失败,可能非BMP格式
    CString strMsg;
    strMsg = "读取图像时出错!可能是不支持该类型的图像文件!";

    // 提示出错
    MessageBox(NULL, strMsg, "系统提示", MB_ICONINFORMATION | MB_OK);

    // 恢复光标形状
    EndWaitCursor();

    // 返回
    return;
}

// 初始化胀标记为FALSE
SetModifiedFlag(FALSE);

// 刷新
UpdateAllViews(NULL);

}

// 恢复光标形状
EndWaitCursor();

// 返回
return;

}

  • 写回答

2条回答 默认 最新

  • oyljerry 2015-09-09 13:58
    关注

    文件句柄没有正确获取,你打开文件的时候判断一下成功没?

    评论

报告相同问题?

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?