需要在
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());
}
}
因此,如果没有这句话,图片就无法加载
本文讨论了在图像处理程序中遇到的问题,即加载BMP格式图片失败。通过在源代码中加入特定的序列化代码,成功解决了图片加载问题。详细解释了CDib类中的序列化函数,并提供了相关代码片段。

1102

被折叠的 条评论
为什么被折叠?



