⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_56309.htm

📁 vc
💻 HTM
字号:
<p>
序号:56309 发表者:大海辽阔 发表日期:2003-10-16 19:13:43
<br>主题:急!文档串行化问题,如能解决,就给分!!
<br>内容:有一MFC程序,串行化读取时,视图为何不更新?(工程见附件)<BR>代码如下:<BR>// DrawDoc.cpp : implementation of the CDrawDoc class<BR>//<BR><BR>#include &#34;stdafx.h&#34;<BR>#include &#34;Draw.h&#34;<BR><BR>#include &#34;DrawDoc.h&#34;<BR><BR>#ifdef _DEBUG<BR>#define new DEBUG_NEW<BR>#undef THIS_FILE<BR>static char THIS_FILE[] = __FILE__;<BR>#endif<BR><BR>/////////////////////////////////////////////////////////////////////////////<BR>// CDrawDoc<BR><BR>IMPLEMENT_DYNCREATE(CDrawDoc, CDocument)<BR><BR>BEGIN_MESSAGE_MAP(CDrawDoc, CDocument)<BR>&nbsp;&nbsp;&nbsp;&nbsp;//{{AFX_MSG_MAP(CDrawDoc)<BR>&nbsp;&nbsp;&nbsp;&nbsp;ON_COMMAND(ID_EDIT_UNDO, OnEditUndo)<BR>&nbsp;&nbsp;&nbsp;&nbsp;ON_UPDATE_COMMAND_UI(ID_EDIT_UNDO, OnUpdateEditUndo)<BR>&nbsp;&nbsp;&nbsp;&nbsp;//}}AFX_MSG_MAP<BR>END_MESSAGE_MAP()<BR><BR>/////////////////////////////////////////////////////////////////////////////<BR>// CDrawDoc construction/destruction<BR><BR>CDrawDoc::CDrawDoc()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;// TODO: add one-time construction code here<BR><BR>}<BR><BR>CDrawDoc::~CDrawDoc()<BR>{<BR>}<BR><BR>BOOL CDrawDoc::OnNewDocument()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (!CDocument::OnNewDocument())<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return FALSE;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// TODO: add reinitialization code here<BR>&nbsp;&nbsp;&nbsp;&nbsp;// (SDI documents will reuse this document)<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_ObArray.RemoveAll();<BR>&nbsp;&nbsp;&nbsp;&nbsp;UpdateAllViews(NULL);<BR>&nbsp;&nbsp;&nbsp;&nbsp;return TRUE;<BR>}<BR><BR>IMPLEMENT_SERIAL(CMyLine, CObject, 1)<BR><BR>void CMyLine::Serialize(CArchive &amp;ar)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(ar.IsStoring())<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ar &lt;&lt; (WORD)m_StartX &lt;&lt; (WORD)m_StartY<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;&lt; (WORD)m_EndX &lt;&lt; (WORD)m_EndY;<BR>&nbsp;&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ar &gt;&gt; (WORD &amp;)m_StartX &gt;&gt; (WORD &amp;)m_StartY<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt; (WORD &amp;)m_EndX &gt;&gt; (WORD &amp;)m_EndY;<BR><BR>}<BR><BR>CMyLine::CMyLine(int StartX, int StartY, int EndX, int EndY)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_StartX = StartX;<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_StartY = StartY;<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_EndX = EndX;<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_EndY = EndY;<BR>}<BR><BR>void CMyLine::DrawLine(CDC *pDC)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;pDC-&gt;MoveTo(m_StartX, m_StartY);<BR>&nbsp;&nbsp;&nbsp;&nbsp;pDC-&gt;LineTo(m_EndX, m_EndY);<BR>}<BR><BR>void CDrawDoc::AddLine(int StartX, int StartY, int EndX,int EndY)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;CMyLine *pMyLine = new CMyLine(StartX, StartY, EndX, EndY);<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_ObArray.Add(pMyLine);<BR>&nbsp;&nbsp;&nbsp;&nbsp;SetModifiedFlag();<BR>}<BR><BR>CMyLine *CDrawDoc::GetLine(int index)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(index &lt; 0 || index &gt; m_ObArray.GetUpperBound())<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;return (CMyLine *)m_ObArray.GetAt(index);<BR>}<BR><BR>int CDrawDoc::GetTotalLine()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;return m_ObArray.GetSize();<BR>}<BR><BR>void CDrawDoc::DeleteContents()<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;int index;<BR>&nbsp;&nbsp;&nbsp;&nbsp;index = m_ObArray.GetSize();<BR>&nbsp;&nbsp;&nbsp;&nbsp;while(index --)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete m_ObArray.GetAt(index);<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_ObArray.RemoveAll();<BR>}<BR><BR>/////////////////////////////////////////////////////////////////////////////<BR>// CDrawDoc serialization<BR><BR>void CDrawDoc::Serialize(CArchive&amp; ar)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (ar.IsStoring())<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// TODO: add storing code here<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_ObArray.Serialize(ar);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// TODO: add loading code here<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_ObArray.Serialize(ar);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>}<BR><BR>......<BR><BR>BOOL CDrawDoc::OnOpenDocument(LPCTSTR lpszPathName) <BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (!CDocument::OnOpenDocument(lpszPathName))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return FALSE;<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;// TODO: Add your specialized creation code here<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;return TRUE;<BR>}
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:大海辽阔 回复日期:2003-10-16 19:15:05
<br>内容:请大虾看看,谢谢!在线等。。。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:_学习者_ 回复日期:2003-10-16 19:36:09
<br>内容:void CMyLine::Serialize(CArchive &amp;ar)<BR>{<BR>&nbsp;&nbsp;//其中代码有问题<BR><BR>}<BR><BR>下面可以,查下MSDN。<BR>void CMyLine::Serialize(CArchive &amp;ar)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(ar.IsStoring())<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ar &lt;&lt;m_StartX &lt;&lt; m_StartY<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;&lt; m_EndX &lt;&lt;m_EndY;<BR>&nbsp;&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ar &gt;&gt; m_StartX &gt;&gt;m_StartY<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt; m_EndX &gt;&gt; m_EndY;<BR>}
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:大海辽阔 回复日期:2003-10-16 21:15:04
<br>内容:&lt;BLOCKQUOTE&gt;引用“第2楼”所言<BR>&lt;Q&gt;void CMyLine::Serialize(CArchive &amp;ar)&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;//其中代码有问题&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;下面可以,查下MSDN。&nbsp;&nbsp;void CMyLine::Serialize(CArchive &amp;ar)&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(ar.IsStoring())&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ar &lt;&lt;m_StartX &lt;&lt; m_StartY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;&lt; m_E...... . . . . . .&nbsp;&nbsp;.&nbsp;&nbsp;.&nbsp;&nbsp;.&nbsp;&nbsp;.&nbsp;&nbsp;.&nbsp;&nbsp;. &lt;/Q&gt;&lt;/BLOCKQUOTE&gt;<BR><BR>问题没有解决。编译工程后,打开文件时提示:非预期文件格式.<BR>请你编译工程......<BR><BR>急盼中。。。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:_学习者_ 回复日期:2003-10-16 21:20:12
<br>内容:我把数据类型改了,不能打开以前的文件。<BR><BR>重新存文件,再打开。<BR><BR>我运行过,没有问题。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:大海辽阔 回复日期:2003-10-16 21:22:42
<br>内容:什么类型?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:_学习者_ 回复日期:2003-10-16 21:32:16
<br>内容:使用了变量本身的类型,原来你强制转换了。<BR><BR>所以在文件中的存储变了。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:大海辽阔 回复日期:2003-10-16 21:44:07
<br>内容:为何转换后,就会出问题呢?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:_学习者_ 回复日期:2003-10-16 22:00:13
<br>内容:俺也不是很确定。<BR><BR>不过串行化对数据类型有要求的。<BR><BR>几年前用过串行,忘了。<BR><BR>查下MSDN。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:大海辽阔 回复日期:2003-10-16 22:42:00
<br>内容:哦,好吧!<BR><BR>我已接受你的答案。<BR><BR>非常感谢你!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -