﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-C小加-随笔分类-VC++</title><link>http://www.cppblog.com/cxiaojia/category/20202.html</link><description>厚德 博学 求真 至善
The bright moon and breeze</description><language>zh-cn</language><lastBuildDate>Sat, 02 Mar 2013 12:55:14 GMT</lastBuildDate><pubDate>Sat, 02 Mar 2013 12:55:14 GMT</pubDate><ttl>60</ttl><item><title>MFC文档序列化实现保存和加载 </title><link>http://www.cppblog.com/cxiaojia/archive/2013/03/02/198177.html</link><dc:creator>C小加</dc:creator><author>C小加</author><pubDate>Sat, 02 Mar 2013 10:04:00 GMT</pubDate><guid>http://www.cppblog.com/cxiaojia/archive/2013/03/02/198177.html</guid><wfw:comment>http://www.cppblog.com/cxiaojia/comments/198177.html</wfw:comment><comments>http://www.cppblog.com/cxiaojia/archive/2013/03/02/198177.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cxiaojia/comments/commentRss/198177.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cxiaojia/services/trackbacks/198177.html</trackback:ping><description><![CDATA[<p class="p0"><strong>1<span style="font-family: 宋体">、序列化定义</span></strong></p>
<p class="p0">MFC<span style="font-family: 宋体">文档</span><span style="font-family: 'Times New Roman'">-</span><span style="font-family: 宋体">视图结构中，序列化机制可以实现内存中对象储存和加载。</span></p>
<p class="p0">序列化机制分为序列化和反序列化，序列化是把内存中的对象以二进制文件的形式存储在磁盘中。反序列化是把序列化后生成的文件恢复到内存。</p>
<p class="p0"><strong>2<span style="font-family: 宋体">、</span><span style="font-family: 'Times New Roman'">CArchive</span><span style="font-family: 宋体">类</span></strong></p>
<p class="p0">CArchive<span style="font-family: 宋体">没有基类。</span><br />CArchive<span style="font-family: 宋体">允许以一个永久二进制（通常为磁盘存储）的形式保存一个对象的复杂网络，它可以在对象被删除时，还能永久保存。可以从永久存储中装载对象，在内存中重新构造它们。使得数据永久保留的过程就叫作</span><span style="font-family: 'Times New Roman'">&#8220;</span>序列化&#8221;<span style="font-family: 宋体">。</span><br />可以把一个归档对象看作一种二进制流。象输入<span style="font-family: 'Times New Roman'">/</span><span style="font-family: 宋体">输出流一样，归档与文件有关并允许写缓冲区以及从硬盘读出或读入数据。输入</span><span style="font-family: 'Times New Roman'">/</span><span style="font-family: 宋体">输出流处理一系列</span><span style="font-family: 'Times New Roman'">ASCII</span><span style="font-family: 宋体">字符，但是归档文件以一种有效率、精练的格式处理二进制对象。</span></p>
<p class="p0"><strong>3<span style="font-family: 宋体">、</span><span style="font-family: 'Times New Roman'">CArchive</span><span style="font-family: 宋体">对象处理基础类型数据</span></strong></p>
<p class="p0"><br />必须在创建一个<span style="font-family: 'Times New Roman'">CArchive</span><span style="font-family: 宋体">对象之前，创建一个</span><span style="font-family: 'Times New Roman'">CFile</span><span style="font-family: 宋体">对象。另外，必须确信归档文件的装入</span><span style="font-family: 'Times New Roman'">/</span><span style="font-family: 宋体">存储与文件的打开模式是兼容的。每一个文件只限于一个活动归档文件。</span><br />当构造一个<span style="font-family: 'Times New Roman'">CArchive</span><span style="font-family: 宋体">对象时，要把它附加给表示一个打开文件的类</span><span style="font-family: 'Times New Roman'">CFile</span><span style="font-family: 宋体">（或派生类）的对象上。还要指定归档文件将用于装载还是存储。</span></p>
<p class="p0">示例：</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000">CFile&nbsp;file(</span><span style="color: #000000">"</span><span style="color: #000000">1.txt</span><span style="color: #000000">"</span><span style="color: #000000">,CFile::modeCreate&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000">&nbsp;CFile::modeWrite);&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">定义一个文件流对象</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">&nbsp;CArchive&nbsp;ar(</span><span style="color: #000000">&amp;</span><span style="color: #000000">file,CArchive::store);&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">定义一个序列化对象和文件流对象绑定并指定归档方式为储存，加载的方式为CArchive::load</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">4</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;ch</span><span style="color: #000000">=</span><span style="color: #000000">'</span><span style="color: #000000">a</span><span style="color: #000000">'</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;</span><span style="color: #0000ff">float</span><span style="color: #000000">&nbsp;f</span><span style="color: #000000">=</span><span style="color: #000000">1.3f</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;CString&nbsp;str(</span><span style="color: #000000">"</span><span style="color: #000000">aa</span><span style="color: #000000">"</span><span style="color: #000000">);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;ar</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">i</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">ch</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">f</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">str;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">储存到文件</span></div>
<p class="p0"></p><br />
<p class="p0"><strong>4<span style="font-family: 宋体">、</span>CArchive<span style="font-family: 宋体">对象</span>处理自定义对象类型数据</strong></p>
<p class="p0"><br />CArchive<span style="font-family: 宋体">对象不仅可以处理首要类型，而且还能处理为</span>序列化而设计的特殊的类的对象。可以序列化的类有以下特点：</p>
<p class="p0">1<span style="font-family: 宋体">、必须为</span>CObject<span style="font-family: 宋体">派生类。</span>直接或者间接的继承<span style="font-family: 'Times New Roman'">CObject</span><span style="font-family: 宋体">类。</span></p>
<p class="p0">2、必须重写CObject类的Serialize成员函数。</p>
<p class="p0">3<span style="font-family: 宋体">、</span>使用<span style="font-family: 'Times New Roman'">DECLARE_SERIAL</span><span style="font-family: 宋体">和</span><span style="font-family: 'Times New Roman'">IMPLEMENT_SERIAL</span><span style="font-family: 宋体">宏。</span></p>
<p class="p0">4<span style="font-family: 宋体">、必须有一个默认构造函数</span></p>
<p class="p0">在Serialize成员函数中完成保存和加载的功能。</p>
<p class="p0">DECLARE_SERIAL( class_name ) <span style="font-family: 宋体">参数为</span>当前类名。</p>
<p class="p0">IMPLEMENT_SERIAL( class_name, base_class_name, wSchema ) 第一个参数为当前类名，第二个参数为父类类名，第三个参数为该类的特定整型标识<span style="font-family: 'Times New Roman'">,</span><span style="font-family: 宋体">该标识将用来解序</span><span style="font-family: 'Times New Roman'">(</span><span style="font-family: 宋体">重新实例化</span><span style="font-family: 'Times New Roman'">)</span>，最小为<span style="font-family: 'Times New Roman'">0</span><span style="font-family: 宋体">。</span></p>
<p class="p0">示例：</p>
<p class="p0"></p>
<p class="p0"></p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #008000">//</span><span style="color: #008000">DrawBase.h</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;CDrawBase&nbsp;:&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;CObject&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">继承自CObject</span><span style="color: #008000"><br /><img id="Codehighlighter1_59_518_Open_Image" onclick="this.style.display='none'; Codehighlighter1_59_518_Open_Text.style.display='none'; Codehighlighter1_59_518_Closed_Image.style.display='inline'; Codehighlighter1_59_518_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_59_518_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_59_518_Closed_Text.style.display='none'; Codehighlighter1_59_518_Open_Image.style.display='inline'; Codehighlighter1_59_518_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif"></span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_59_518_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_59_518_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">:<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;DECLARE_SERIAL(CDrawBase)&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">第一个宏的位置，参数为当前类名</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;CDrawBase();</span><span style="color: #008000">//</span><span style="color: #008000">必须有一个默认构造函数</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">virtual</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;onDraw(CDC</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;pdc);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">virtual</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">~</span><span style="color: #000000">CDrawBase();<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">:<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;UINT&nbsp;m_PenStyle;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;m_PenWidth;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;m_BkMode;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;m_BrushStyle;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;m_issx;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;m_isyy;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;COLORREF&nbsp;m_PenColor;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;COLORREF&nbsp;m_BackgroundColor;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;COLORREF&nbsp;m_BrushColor;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;CPoint&nbsp;m_ptBegin;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;CPoint&nbsp;m_ptEnd;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">:<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;Serialize(CArchive</span><span style="color: #000000">&amp;</span><span style="color: #000000">&nbsp;ar);</span><span style="color: #008000">//</span><span style="color: #008000">重写了Serialize成员函数</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" /></span><span style="color: #000000">}</span></span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">DrawBase.cpp</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">IMPLEMENT_SERIAL(CDrawBase,&nbsp;CObject,&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">)&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">第二个宏的位置，第一个参数为当前类名，第二个参数为父类类名，第三个参数为该类的特定整型标识,该标识将用来解序(重新实例化)，最小为0</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;CDrawBase::Serialize(CArchive</span><span style="color: #000000">&amp;</span><span style="color: #000000">&nbsp;ar)<br /><img id="Codehighlighter1_686_985_Open_Image" onclick="this.style.display='none'; Codehighlighter1_686_985_Open_Text.style.display='none'; Codehighlighter1_686_985_Closed_Image.style.display='inline'; Codehighlighter1_686_985_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_686_985_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_686_985_Closed_Text.style.display='none'; Codehighlighter1_686_985_Open_Image.style.display='inline'; Codehighlighter1_686_985_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif"></span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_686_985_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_686_985_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;CObject::Serialize(ar);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(ar.IsStoring())</span><span style="color: #008000">//</span><span style="color: #008000">保存，加载为ar.IsLoading()</span><span style="color: #008000"><br /><img id="Codehighlighter1_765_864_Open_Image" onclick="this.style.display='none'; Codehighlighter1_765_864_Open_Text.style.display='none'; Codehighlighter1_765_864_Closed_Image.style.display='inline'; Codehighlighter1_765_864_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_765_864_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_765_864_Closed_Text.style.display='none'; Codehighlighter1_765_864_Open_Image.style.display='inline'; Codehighlighter1_765_864_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif"></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_765_864_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_765_864_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ar&nbsp;</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">m_PenColor</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">m_PenStyle</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">m_PenWidth</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">m_BrushColor</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">m_BrushStyle</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">m_issx</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">m_isyy;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;Else&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">加载</span><span style="color: #008000"><br /><img id="Codehighlighter1_884_983_Open_Image" onclick="this.style.display='none'; Codehighlighter1_884_983_Open_Text.style.display='none'; Codehighlighter1_884_983_Closed_Image.style.display='inline'; Codehighlighter1_884_983_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_884_983_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_884_983_Closed_Text.style.display='none'; Codehighlighter1_884_983_Open_Image.style.display='inline'; Codehighlighter1_884_983_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif"></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_884_983_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_884_983_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ar&nbsp;</span><span style="color: #000000">&gt;&gt;</span><span style="color: #000000">m_PenColor</span><span style="color: #000000">&gt;&gt;</span><span style="color: #000000">m_PenStyle</span><span style="color: #000000">&gt;&gt;</span><span style="color: #000000">m_PenWidth</span><span style="color: #000000">&gt;&gt;</span><span style="color: #000000">m_BrushColor</span><span style="color: #000000">&gt;&gt;</span><span style="color: #000000">m_BrushStyle</span><span style="color: #000000">&gt;&gt;</span><span style="color: #000000">m_issx</span><span style="color: #000000">&gt;&gt;</span><span style="color: #000000">m_isyy;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />}</span></span></div>
<p class="p0"></p>
<p class="p0">重载提取（<span style="font-family: 'Times New Roman'">&gt;&gt;</span><span style="font-family: 宋体">）和插入（</span><span style="font-family: 'Times New Roman'">&lt;&lt;</span><span style="font-family: 宋体">）是方便的归档编程接口。它支持主要类型和</span><span style="font-family: 'Times New Roman'">CObject</span><span style="font-family: 宋体">派生类。</span><br />CArchive<span style="font-family: 宋体">还支持使用</span><span style="font-family: 'Times New Roman'">MFC Windows</span><span style="font-family: 宋体">套接字类</span><span style="font-family: 'Times New Roman'">CSocket</span><span style="font-family: 宋体">和</span><span style="font-family: 'Times New Roman'">CSocketFile</span><span style="font-family: 宋体">编程。</span><span style="font-family: 'Times New Roman'">IsBufferEmpty</span><span style="font-family: 宋体">成员函数也支持这种使用。</span></p>
<p class="p0">一些集合类也支持序列化，<span style="font-family: 'Times New Roman'">CObArray,Vector,CPtrArray</span><span style="font-family: 宋体">。</span></p>
<p class="p0"></p>
<p class="p0">在<span style="font-family: 'Times New Roman'">MFC</span><span style="font-family: 宋体">文档</span><span style="font-family: 'Times New Roman'">-</span><span style="font-family: 宋体">视图结构中，</span><span style="font-family: 'Times New Roman'">Doc</span><span style="font-family: 宋体">类是被系统设定好支持序列化的类，在</span><span style="font-family: 'Times New Roman'">Doc</span><span style="font-family: 宋体">类中重写</span>Serialize<span style="font-family: 宋体">成员函数</span>。在函数中对你要保存的对象序列化。</p>
<p class="p0">完成之后，点击菜单栏上的保存和打开就可以实现序列化了。</p>
<p class="p0">&nbsp;</p><br /><br /><br /><img src ="http://www.cppblog.com/cxiaojia/aggbug/198177.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cxiaojia/" target="_blank">C小加</a> 2013-03-02 18:04 <a href="http://www.cppblog.com/cxiaojia/archive/2013/03/02/198177.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>vs2005,vs2008解决添加变量添加函数添加类时脚本错误问题</title><link>http://www.cppblog.com/cxiaojia/archive/2012/11/12/195070.html</link><dc:creator>C小加</dc:creator><author>C小加</author><pubDate>Mon, 12 Nov 2012 04:35:00 GMT</pubDate><guid>http://www.cppblog.com/cxiaojia/archive/2012/11/12/195070.html</guid><wfw:comment>http://www.cppblog.com/cxiaojia/comments/195070.html</wfw:comment><comments>http://www.cppblog.com/cxiaojia/archive/2012/11/12/195070.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cxiaojia/comments/commentRss/195070.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cxiaojia/services/trackbacks/195070.html</trackback:ping><description><![CDATA[<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">给一个控件添加变量的时候出现的脚本错误问题</span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">解决方案：</span></p>
<p style="text-indent: -18pt; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0; mso-list: l0 level1 lfo1" class="MsoListParagraph"><span style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin" lang="EN-US"><span style="mso-list: Ignore"><font face="Calibri">1．</font><span style="font: 7pt 'Times New Roman'">&nbsp; </span></span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">打开开始菜单，点击运行按钮，输入</span><span lang="EN-US"><font face="Calibri">regedit</font></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">，进入注册表界面</span></p>
<p style="text-indent: -18pt; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0; mso-list: l0 level1 lfo1" class="MsoListParagraph"><span style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin" lang="EN-US"><span style="mso-list: Ignore"><font face="Calibri">2．</font><span style="font: 7pt 'Times New Roman'">&nbsp; </span></span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">找到目录</span><font face="Calibri"> <span lang="EN-US">HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones</span></font></p>
<p style="text-indent: -18pt; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0; mso-list: l0 level1 lfo1" class="MsoListParagraph"><span style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin" lang="EN-US"><span style="mso-list: Ignore"><font face="Calibri">3．</font><span style="font: 7pt 'Times New Roman'">&nbsp; </span></span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">查看此目录下是否存在</span><span lang="EN-US"><font face="Calibri">1000</font></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">目录，如果不存在则建立此目录</span></p>
<p style="text-indent: -18pt; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0; mso-list: l0 level1 lfo1" class="MsoListParagraph"><span style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin" lang="EN-US"><span style="mso-list: Ignore"><font face="Calibri">4．</font><span style="font: 7pt 'Times New Roman'">&nbsp; </span></span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">在</span><span lang="EN-US"><font face="Calibri">1000</font></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">目录下创建</span><span lang="EN-US"><font face="Calibri">DWORD</font></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">值，名字为</span><span lang="EN-US"><font face="Calibri">1207</font></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">，值为</span><span lang="EN-US"><font face="Calibri">0</font></span></p>
<p style="text-indent: -18pt; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0; mso-list: l0 level1 lfo1" class="MsoListParagraph"><span style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin" lang="EN-US"><span style="mso-list: Ignore"><font face="Calibri">5．</font><span style="font: 7pt 'Times New Roman'">&nbsp; </span></span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">重启</span><span lang="EN-US"><font face="Calibri">vs2005/2008</font></span></p> <img src ="http://www.cppblog.com/cxiaojia/aggbug/195070.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cxiaojia/" target="_blank">C小加</a> 2012-11-12 12:35 <a href="http://www.cppblog.com/cxiaojia/archive/2012/11/12/195070.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>