📄 untitled-17.txt
字号:
现在工作只做了一半。最后一步是修改CLine::Serialize,使它根据Getobjectschema不
同的返回值并行化Cline。原Serialize函数如下:
voidCLine::Serialize(CArchive& ar)
5
COb〕ect::Serialize(ar);
。f(ar.Isstor。na(》
co<<Ill-- piE工OO<<Ifi,An ptTO;
e1Se人L0ad土ng,not StO过ng
dl>>ITI--PtFY0th>>Ifl,-PtTO;
【
新函数如下:
void CLine::Serialize(CArchive&ar)
(
COb】ect::Serialize(ar);
。f(ar.Isstoring())
ee<< ITI--ptF<Ofu<< Ifi--ptTO<< 111--CICL工CC;
else {
UINT "schema= ar.Getobjectschema();
sw。tch("schema)
easel:、Versionl CLine
ar>> ltl--ptFrom>> m-ptTo;
m-clrLine= RGB(0, O, 0); // Default color
break;
case 2:人Version 2 CLine
ar>> ltl---ptFrom>> Tn-ptTo>> ltl--clrLlne;
break;
default:人 Unknown version
AfxThrowArchiveException(CArchiveException::badschema);
tireax;
I
g
g
明白它是怎样工作的了吗? CLine对象写到档案上时,它的格式总是CLine的第2个版
本。但是读取 CLine时,根据 Getobjectschema返回值的不同,它又被当作 CLine版本回或版
本2读回。如果模式号为1,则对象按老方式读取,并把m_。lrLine设置为默认值。如果模
式号为2,则对象所有数据成员,包括m.clrLine,都要从档案中读取出来。其他模式号会导
致CArchiveException,表示不能识别版本号(如果发生异常,可能是因为程序错了或档案毁坏
了。)如果将来还要修改Cline,则要把模式号增加到3并给新模式添加一个。ase程序段。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -