vc++.net2008使用ceditview读文件,重载void CchartDoc::Serialize(CArchive& ar)将char转化为tchar,因为.net默认是unicode编码,不转化的话会乱码
void CchartDoc::Serialize(CArchive& ar)
{
// CEditView 包含一个处理所有序列化的编辑控件
CString str;
str.Empty();
char buf[MSG_LEN+1]={0};
UINT k=0;
while((k=ar.Read(buf,MSG_LEN))>0){
DebugMsg(_T("read k=%d"),k);
str+=fromChar(buf);
}
((CEditView*)(m_viewList.GetHead()))->GetEditCtrl().SetWindowText(str);
//reinterpret_cast<CEditView*>(m_viewList.GetHead())->SerializeRaw(ar);
}
BOOL CchartDoc::OnSaveDocument(LPCTSTR lpszPathName)
{
// TODO: 在此添加专用代码和/或调用基类
CString str1;
char tmp[MSG_LEN*2+1]={0};
((CEditView*)(m_viewList.GetHead()))->GetEditCtrl().GetWindowText(str1);
CFile file ;
try
{
// file.Remove(lpszPathName);
file.Open(lpszPathName,CFile::modeCreate|CFile::modeNoTruncate|CFile::modeWrite);
CStringToChar(str1,tmp);
// CArchive ar(&file,CArchive::store);
//ar<<str1;
//ar.Close();
file.Write(tmp,strlen(tmp));//
file.Close();
return true;
}
catch(CFileException * e)
{
e->m_cause ;
return false ;
}
//return CDocument::OnSaveDocument(lpszPathName);
}