📄 untitled-16.txt
字号:
用程序可以提供用户希望的向下兼容性。
如果要编写一个具有MFC可视化模式支持的可串行化类,一般需要两步:
1.将IMPLEMENTSERIAL宏中的模式号与值VERSIONABLE.SCHEMA相或。
2.如果从档案加载对象时需要调用 CArchive:: Getobjectschema,则要修改类的 Serialize
函数,并相应地调整其并行化例程。 Getobjectschema返回要进行并行化对象的模
式号。
调用 Getobjectschema时要注意几个规则。首先,只有对象在被并行化时才能调用。其
次,必须在读取档案对象数据之前调用。再者,它只能被调用一次。如果Getobfoctscherna在
调用Serialize前后被调用了两次,则返回一l。
假定在应用程序的第2版本中,您要修改Cline类,想添加一个成员变量,用来保存线
的颜色。下面是修改后的类的声明:
class CLine:public C0bject
2
DECLARE.SERIAL(CLlne)
protected:
CPointITI.-ptFrom;
CPointLptTo;
COLORREF。clrLine; // Line color(new in version 2)
public:
CLine() { }
CLine(CPoint froo, CPoint to, COLORREF color)
{。ptFrom= from;。ptTo= to;。clrL。ne= color
void Serialize(CArchive& ar);
因为线的颜色是持久性属性(也就是说,保存到档案中的红线在读出时依旧是红的。),所以
J动人民”pCh**1*e..】**m1*e,ie匕41中1】1乙ffi.mrfom州111~-m1V.N/二yrgh B6甲4了个LII]--0fL*en
这意味着要把CLine的模式号增加到2。使用原类时按以下方式调用MFC的
IMPLEMENTSERIAL宏:
IMPLEMENT_SERIAL(CLine, CObDect, l)
但是在修改后的类中,应该这样调用1*PL****T8**1*L:
IMPLEMENT.SERIAL(CLine,CObject,ZIVERS10NABLE_SCHENA)
更新后的程序在读取CLine对象时,如果对象的模式号是1,MFC也不会发送CArchive异常,
因为模式号中有VERSIONABLE.SCHEMA标志。但是它会了解到:由于模式号从1变为2,
两个模式实际上是不同的。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -