我将视图静态三拆分,第一个视图我使用CEditView,我需要在这个视图中显示文字,当视图中已存在文字时,我需要将这些文字存到一个CString数组中???
另外,为了实现视图的字串显示和存储,我在DOC类中的Serialize函数中采用了视图类中的那个文档存取函数SerializeRaw,这样做了之后,我发现视图类中的OnDraw函数不起做用了,这是怎么回事???我觉得MFC有点太过于繁冗了!!!

解决方案 »

  1.   

    GetEditCtrl( ).GetWindowText(str);
      

  2.   

    CString数组?是不是要分行存储?CEdit& edit = GetEditCtrl();
    int nLineCount = edit.GetLineCount();
    for (int i = 0; i < nLineCount; i++)\
    {
        edit.GetLine(i, lpszString);//读取每一行的文字
    }
      

  3.   

    其实你只要在view类中使用GetWindowText或者LockBuffer就可以了,设置文本的话用SetWindowText。GetWindowText比较好用一些。不用管Serialize本身就能实现存储
      

  4.   

    可是我需要按行存储啊,GetWindowText能实现按行么?我的那本工具书里收录的CEdit类成员咋没有GetWindowText?另外,楼上的楼上使用了CEdit::GetLene(int ,LPTSTR),这个函数不能直接进行字串操作啊...昨晚我试过了....我 试试GetWindowText吧.
      

  5.   

    我在写一个CASL汇编的解释器,需要把视图中的文本存入字串数组中,然后才可以对CASL代码进行扫描.还望各路高手给个详细的解决方式,VC刚开始学,苦于无法将自己想的东西使用MFC表现出来.
      

  6.   

    GetWindowText是CWnd里面定义的,非虚拟函数,不出现在CEdit类成员里面很正常的。
    用CString的Find[换行不就是'\n'或者"\r\n"嘛],或者转为string stream然后用stream input的方式读都可以解决行的问题啊。int GetLine( int nIndex, LPTSTR lpszBuffer, int nMaxLength ) const;不如GetWindowText后Find的效率高,不过简单点。LPTSTR是你提供的缓冲区,CEdit要是Multiple-Line的否则nIndex无效,还有就是nIndex < CEdit::GetLineCount()...