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 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀