VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 716|回复: 4

CRichEditCtrl串行化的问题

[复制链接]

1

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-3-22 17:00:01 | 显示全部楼层 |阅读模式

我使用CRichEditView写一个文本编辑器,把其中的字符用CString存储起来,并想写入一个纯文本中,可是做了以下操作之后,得到的文件总是带有一个复杂的乱码的开头,请问该怎么办啊?
void CLispEditorDoc::Serialize(CArchive& ar)
{
        POSITION pos = GetFirstViewPosition();
        CRichEditView* pFirstView =(CRichEditView*) GetNextView( pos );

        CRichEditCtrl *pCtrl = &pFirstView->GetRichEditCtrl();
        pCtrl->GetWindowText(m_text);
//        AfxMessageBox(m_text);
       
        if (ar.IsStoring())
        {       
                ar<<m_text;// TODO: add storing code here
        }
        else
        {
                ar>>m_text;// TODO: add loading code here
        }

        // Calling the base class CRichEditDoc enables serialization
        //  of the container document's COleClientItem objects.
        // TODO: set CRichEditDoc::m_bRTF = FALSE if you are serializing as text
        CRichEditDoc::m_bRTF = FALSE;
        CRichEditDoc::Serialize(ar);

}
回复

使用道具 举报

0

主题

3

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-7-29 13:00:01 | 显示全部楼层
首先提出你的代码不安全,指针都没加判断
m_text是否初始化了
你弹出MessageBox是否是正确的结果
回复

使用道具 举报

1

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-8-1 21:30:01 | 显示全部楼层
m_text是我在Document类中定义的一个成员,应该没有什么问题。是不是CRichEditDoc::Serialize(ar)这个函数输出文件的时候本来就带有一个文件头啊?
后来我将代码改成:
void CLispEditorDoc::Serialize(CArchive& ar)
{


if (ar.IsStoring())
{

}
else
{

}

// Calling the base class CRichEditDoc enables serialization
// of the container document's COleClientItem objects.
// TODO: set CRichEditDoc::m_bRTF = FALSE if you are serializing as text
CRichEditDoc::m_bRTF = FALSE;
CRichEditDoc::Serialize(ar);

}

与上次的效果几乎一样,无语了。
如果在ClassWizard中将Serialize函数删掉,自己重载OnCloseDocument与OnOpenDocument行不行啊?
回复

使用道具 举报

0

主题

10

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
发表于 2020-8-1 22:45:01 | 显示全部楼层
去看看CString是怎么序列化的
回复

使用道具 举报

1

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-8-3 12:00:01 | 显示全部楼层
请问在哪儿能看到啊?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表