用List Box 可能要简单点

解决方案 »

  1.   

    我帮你解决了!
    首先从CEDIT派生CMYEDIT。
    你应该添加几个成员变量:
    private :
       int nRowIndex;
       int nRowCount;
       CArray<CString,CString> m_ArrayString;
    并初始化成员变量。
    CMYEDIT::CMYEDIT()
    {
       nRowIndex=0;
       nRowCount=10;
       m_ArrayString.SetSize(0,RowCount);
    }
    添加一个成员函数[EDIT文本的更新]如下:
    void CMYEDIT::AppendString(CString str)
    {
        CString sText=str+"\r\n"; //给文本加上换行字符
        bool bFull=false;         //是否已到文本允许的最大行数
        int nLoop=0;             m_ArrayString.Add(sText); 
    if(nRowIndex<nRowCount)   //未够指定行数
    {
            nRowIndex+=1;
    }
    else
    {   
    bFull=true;
    for(int i=0;i<m_ArrayString.GetSize()-1;i++) 
    {
    m_ArrayString.SetAt(i,m_ArrayString.GetAt(i+1));  
    }
    m_ArrayString.RemoveAt(m_ArrayString.GetSize()-1);
    }   //清空文本内容
       sText="";
       if(bFull)
         nLoop=m_ArrayString.GetSize();
       else
       nLoop=nRowIndex;
       for(int j=0;j<nLoop;j++) 
       {
         sText+=m_ArrayString.GetAt(j); 
       }
    SetWindowText(sText);
    }为了控制EDIT最大行数,添加函数如下:
    void CLimitRowEdit::SetMaxRowCount(int nMaxRow)
    {
       nRowCount=nMaxRow;
       m_ArrayString.SetSize(0, nRowCount);
    }然后生成一对话框。添加两个EDIT
     ID_EDIT1:MULTI属性
     ID_EDIT2:在里面输入你添加的文本
    命令按钮:
    void CXXDlg::OnAdd() 
    {
        CString strText;
        GetDlgItemText(IDC_EDIT2,strText);
        m_MultiEdit.AppendString(strText); 
    }
      
    别忘了在OnInitDialog中将ID_EDIT1子类化。
    在stdafx.h中在所有*.h下面加一句:
    #include <afxtempl.h>  //CArray需要
    试下吧!