主题:[讨论]文档视图结构数据同步问题
我用MFC的文档视图结构建的程序,通过文档的Serialize()保存CString数据,但是在保存时我把CString数据进行了字符转化(相当于加密)后保存,如下代码:
void Serialize(CArchive& ar)
{
CString strDescription;
if(ar.IsStoring())
{
BYTE byCount;
byCount = strDescription.GetLength();
ar.Write(&byCount,sizeof(byCount));
ar.Write(Jiami(strDescription),byCount); //函数Jiami()表示加密
}
else
{
char szTemp[MAX_STRING];
BYTE byCount;
ar.Read(&byCount,sizeof(byCount));
ar.Read(szTemp,byCount);
szTemp[byCount] = 0;
strDescription = Jiemi(szTemp); //函数Jiemi()表示解密
}
}
问题是每次保存数据后,文档自动更新了数据,使得更新后的数据是加密后的数据,而我本来要的是没有加密后的数据(不然视图显示的是乱码)。我的解决方法是每次保存数据后就立即重新打开文档ReOpenDocument()——相当于重新读取数据——因为读取数据时经过了解密,可这种方法并不是好方法。请教还有没有更好的解决方法?
void Serialize(CArchive& ar)
{
CString strDescription;
if(ar.IsStoring())
{
BYTE byCount;
byCount = strDescription.GetLength();
ar.Write(&byCount,sizeof(byCount));
ar.Write(Jiami(strDescription),byCount); //函数Jiami()表示加密
}
else
{
char szTemp[MAX_STRING];
BYTE byCount;
ar.Read(&byCount,sizeof(byCount));
ar.Read(szTemp,byCount);
szTemp[byCount] = 0;
strDescription = Jiemi(szTemp); //函数Jiemi()表示解密
}
}
问题是每次保存数据后,文档自动更新了数据,使得更新后的数据是加密后的数据,而我本来要的是没有加密后的数据(不然视图显示的是乱码)。我的解决方法是每次保存数据后就立即重新打开文档ReOpenDocument()——相当于重新读取数据——因为读取数据时经过了解密,可这种方法并不是好方法。请教还有没有更好的解决方法?