📄 subject_17080.htm
字号:
<p>
序号:17080 发表者:dongyu9901 发表日期:2002-10-08 11:31:33
<br>主题:如何用CArchive将一个结构写入文件?
<br>内容:当结构中包含CString时,读出的内容不对。
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:凯凯 回复日期:2002-10-08 11:37:29
<br>内容:你要自己为你的结构添加序列化的功能。<BR>去看看深入浅出MFC这本书吧。上面讲得很清楚,CSDN上有下载。<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>
回复者:徐景周 回复日期:2002-10-08 11:47:39
<br>内容:一个个写入,再一个个读出,如下:<BR>自定义结构:<BR>typedef struct tagSymbol //符号层段<BR>{<BR> double dTopDepth; //顶部深度<BR> double dBottomDepth; //底部深度<BR> DWORD nSymbol; //符号(索引)<BR> UINT nColor; //符号颜色<BR> COLORREF bColor; //符号背景色<BR> long nSize; //符号大小(单位:mm)<BR> double dScale; //符号层的缩进比例(0...1)<BR> TCHAR szName[255]; //岩性名称描述,暂用不上<BR>}SYMBOL;<BR><BR>typedef struct tagSymbolPillarAspect //符号柱外观<BR>{<BR> WORD dwDrawLineMode; //划线方式(分层线的类型:0--实线、1--虚线、2--波浪线)<BR><BR><BR> int nFillMode; //符号填充模式 0--单个符号表示 1--单行符号填充 2--符号填充 3--颜色填充 4--文字 5--文字+颜色 <BR> long nLineWidth; //分层线宽<BR>} SymbolPillarAspect;<BR><BR><BR>typedef CArray<SYMBOL, SYMBOL&> ARRAY_SYMBOL; <BR>ARRAY_SYMBOL m_Data; //剖面数组<BR> SymbolPillarAspect m_Aspect; //外观<BR><BR>void Serialize(CArchive &ar)<BR>{<BR> if(ar.IsStoring()) //导出<BR> { <BR> if(m_uVersion==1)<BR> {<BR> //模板 <BR> ar << m_Aspect.dwDrawLineMode;<BR> ar << m_Aspect.nFillMode; <BR> ar << m_Aspect.nLineWidth; <BR> <BR> //数据<BR> ar << szTagData; //标志<BR> ar << m_Data.GetSize(); //个数<BR> for( int i=0; i< m_Data.GetSize(); i++ )<BR> {<BR> ar << m_Data[i].dTopDepth;<BR> ar << m_Data[i].dBottomDepth;<BR> ar << m_Data[i].nSymbol;<BR> ar << m_Data[i].nColor;<BR> ar << m_Data[i].bColor;<BR> ar << m_Data[i].nSize;<BR> ar << m_Data[i].dScale;<BR> }<BR> }<BR> }<BR> else //导入<BR> {<BR> DeleteData(); // added by majun, 7.24<BR><BR> if(m_uVersion==1)<BR> {<BR> //模板<BR> ar >> m_Aspect.dwDrawLineMode;<BR> ar >> m_Aspect.nFillMode; <BR> ar >> m_Aspect.nLineWidth; <BR> <BR> <BR> //数据 <BR> CString szSymbol = _T("");<BR> ar >> szSymbol; <BR> if(szSymbol != szTagData)<BR> {<BR> AfxMessageBox("符号柱数据错误!");<BR> return;<BR> }<BR> int nSymbolCount = 0;<BR> ar >> nSymbolCount; //个数<BR> for( int i=0; i< nSymbolCount; i++ )<BR> {<BR> SYMBOL pItem ;<BR> ar >> pItem.dTopDepth ;<BR> ar >> pItem.dBottomDepth;<BR> ar >> pItem.nSymbol;<BR> ar >> pItem.nColor;<BR> ar >> pItem.bColor;<BR> ar >> pItem.nSize;<BR> ar >> pItem.dScale;<BR> <BR> m_Data.Add( pItem );<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>
回复者:dongyu9901 回复日期:2002-10-08 15:16:22
<br>内容:Thanks 我已经找到答案<BR>用CArchive::Write
<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 + -