📄 untitled-18.txt
字号:
6.2.4串行化工作过程
看看实际中数据进出档案的串行化和并行化过程,可以帮助您进一步了解MFC的运作
过程及其体系结构。 MFC通过直接把原始数据类型如 nit和 DWORD复制到档案中从而实
现了该类型数据的串行化。为便于理解,下列引自MFC源代码文件A。core。pp中的程序,
说明了对于DWORD,CArchive中插人运算符的使用方法:
CArch。ye& CArch。ye::operator<<(DWORD dw)
3
if(m一lpBufCur+ s。zeof(DWORD)>。lpBufMax)
Flllsh();
if(!(In--nMode& bNoByteswap》
.AfxByteswap(dw, In--lpBufCur);
e工Se
。(DWORD。)。lpBufCur= dw;
m--lpBufCur+= slzeof(DWORD);
return兴this;
g
为了提高执行效率,CArchive对象把接收到的数据保存在内部缓冲区。。lpBufCur指向该
缓冲区中数据的当前位置。如果缓冲区太满而不能再保存一个DWORD,它就会在DWORD
复制给它之前被清空。对于挂接在 CFile上的 CArchive对象,CA。hive:: Flush会将当前缓冲
区中的内容写人文件。
CString、CRect以及其他从MFC类中生成的非原始数据类型以不同的方式串行化。例
如:对于串行化 CString,先输出字符数后输出字符本身。可以用 CArchive:: Write执行写人
操作。下列从Arccore.cpp中节选的程序段说明了一个包含不足255个字符的CString是如
何被串行化的:
CArchive& AFXAPI operator<<(CArchive& ar, const CString& string)
(
。f(string.GetData()->nDataLength< 255)
3
ar<<(BYTE)sir。ng.GetData()->nDataLength;
z
ar.Write(string。pchData,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -