图像处理过程中图像不能加载的其中一个原因解答

来源:互联网 发布:sql创建表格语句 编辑:程序博客网 时间:2024/06/17 15:26
我做了一个图像处理程序,编译是正确的,但是加载不进去BMP格式的图片,找了好久的原因,终于被我找到了:

需要在

void CImageProcessingDoc::Serialize(CArchive& ar)
{
 if (ar.IsStoring())
 {
  // TODO: add storing code here
 }
 else
 {
  // TODO: add loading code here
 }
}

源码中加入 m_pDibInit->Serialize(ar);这句代码,其中 CDib* m_pDibInit;这句话的调用CDib类中的函数

void CDib::Serialize(CArchive& ar)它的代码如下

void CDib::Serialize(CArchive& ar)
{
 DWORD dwPos;

 // 获得此归档文件的CFile对象指针
 dwPos = ar.GetFile()->GetPosition();
 TRACE("CDib::Serialize -- pos = %d\n", dwPos);

 // 从归档文件缓冲区中冲掉未写入数据
 ar.Flush();

 // 重新获得此归档文件的CFile对象指针
 dwPos = ar.GetFile()->GetPosition();
 TRACE("CDib::Serialize -- pos = %d\n", dwPos);

 // 确定归档文件是否被存储,是则进行存储 
 if(ar.IsStoring()) {
  Write(ar.GetFile());
 }

 // 否则进行加载
 else {
  Read(ar.GetFile());
 }
}

因此,如果没有这句话,图片就无法加载

原创粉丝点击