急!文档串行化问题,如能解决,就给分!!

JiaYL 2003-10-16 06:52:21
有一MFC程序,串行化读取时,视图为何不更新?
代码如下:
// DrawDoc.cpp : implementation of the CDrawDoc class
//

#include "stdafx.h"
#include "Draw.h"

#include "DrawDoc.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CDrawDoc

IMPLEMENT_DYNCREATE(CDrawDoc, CDocument)

BEGIN_MESSAGE_MAP(CDrawDoc, CDocument)
//{{AFX_MSG_MAP(CDrawDoc)
ON_COMMAND(ID_EDIT_UNDO, OnEditUndo)
ON_UPDATE_COMMAND_UI(ID_EDIT_UNDO, OnUpdateEditUndo)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDrawDoc construction/destruction

CDrawDoc::CDrawDoc()
{
// TODO: add one-time construction code here

}

CDrawDoc::~CDrawDoc()
{
}

BOOL CDrawDoc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
return FALSE;

// TODO: add reinitialization code here
// (SDI documents will reuse this document)
m_ObArray.RemoveAll();
UpdateAllViews(NULL);
return TRUE;
}

IMPLEMENT_SERIAL(CMyLine, CObject, 1)

void CMyLine::Serialize(CArchive &ar)
{

if(ar.IsStoring())
ar << (WORD)m_StartX << (WORD)m_StartY
<< (WORD)m_EndX << (WORD)m_EndY;
else
ar >> (WORD &)m_StartX >> (WORD &)m_StartY
>> (WORD &)m_EndX >> (WORD &)m_EndY;

}

CMyLine::CMyLine(int StartX, int StartY, int EndX, int EndY)
{
m_StartX = StartX;
m_StartY = StartY;
m_EndX = EndX;
m_EndY = EndY;
}

void CMyLine::DrawLine(CDC *pDC)
{
pDC->MoveTo(m_StartX, m_StartY);
pDC->LineTo(m_EndX, m_EndY);
}

void CDrawDoc::AddLine(int StartX, int StartY, int EndX,int EndY)
{
CMyLine *pMyLine = new CMyLine(StartX, StartY, EndX, EndY);
m_ObArray.Add(pMyLine);
SetModifiedFlag();
}

CMyLine *CDrawDoc::GetLine(int index)
{
if(index < 0 || index > m_ObArray.GetUpperBound())
return 0;
return (CMyLine *)m_ObArray.GetAt(index);
}

int CDrawDoc::GetTotalLine()
{
return m_ObArray.GetSize();
}

void CDrawDoc::DeleteContents()
{
int index;
index = m_ObArray.GetSize();
while(index --)
delete m_ObArray.GetAt(index);
m_ObArray.RemoveAll();
}

/////////////////////////////////////////////////////////////////////////////
// CDrawDoc serialization

void CDrawDoc::Serialize(CArchive& ar)
{

if (ar.IsStoring())
{
// TODO: add storing code here
m_ObArray.Serialize(ar);
}
else
{
// TODO: add loading code here
m_ObArray.Serialize(ar);

}

}

......

BOOL CDrawDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
if (!CDocument::OnOpenDocument(lpszPathName))
return FALSE;

// TODO: Add your specialized creation code here

return TRUE;
}
...全文
48 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
JiaYL 2003-10-16
  • 打赏
  • 举报
回复
问题没有解决。

请问:如何上传工程文件?
nuaawenlin 2003-10-16
  • 打赏
  • 举报
回复
先将串行化的数据TRACE()出来看看,是不是读到了数据
kangxl 2003-10-16
  • 打赏
  • 举报
回复
再读入完后,加上Invalidate()刷新视图,就可以了
JiaYL 2003-10-16
  • 打赏
  • 举报
回复
请大虾看看,谢谢!在线等。。。

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧