rt

解决方案 »

  1.   

    VC的代码编辑区就是一个大的RichEdit控件,在你输入字符的时候他比对VC中的一些关键字,是关键字就把这个单词改为一个颜色。如同:
    /*-==============================================================
      *增加命令提示,并将控件中的文字总数取得,以便后来确定只读的区域
      *str为在CommandEdit控件中的提示语句
      * bBold 判断显示的字是否为加粗
      * clr   为新增加的字使用什么颜色
      *=================================================================*/
    void CVSCommandEdit::AddText(CString str,BOOL bBold,COLORREF clr)
    {
    LONG nStart,nEnd; 
        //插入传入的字符串
        this->SetSel(0,-1);
        this->GetSel(nStart,nEnd);
        this->SetSel(nEnd,nEnd + 1);
    this->ReplaceSel(str);
        int nLen        = str.GetLength();
        SetSel(nEnd - 1,nEnd + nLen);
        DWORD dwEffects = bBold?CFE_BOLD:0;
        CHARFORMAT cfm;
        cfm.cbSize      = sizeof(cfm);
        cfm.dwEffects   = CFE_BOLD;
        cfm.crTextColor = clr;
        cfm.dwMask      = bBold ? (CFM_BOLD | CFM_COLOR) : CFM_COLOR;
        SetSelectionCharFormat(cfm);this->SetSel(0,-1);
    this->GetSel(this->m_crReadOnlyPos.cpMin,this->m_crReadOnlyPos.cpMax);
    this->m_crReadOnlyPos.cpMax -= 1;
    this->SetSel(this->m_crReadOnlyPos.cpMax + 1,-1);    this->EnableScrollBar(SB_BOTH,ESB_DISABLE_BOTH);
    }
      

  2.   

    用状态机+上面的代码就可以实现智能感应。
    www.codeproject.com上面就有很多,edit里面
      

  3.   

    请问一楼的我的是CEditView继承的可以吗?
      

  4.   

    那有没有什么比较方便的,上面的代码我放在里面this->SetSel函数也找不到啊,还有this->m_crReadOnlyPos.cpMin那些都不存在,是继承哪个类的?
      

  5.   

    你可以看看MSDN中带有的WINDOWS的wordpad记事本的源代码
      

  6.   

    我用CRichEditView可以吗?不然的话我得从CView继承视图,然后在里面建个继承CRichEditCtrl类的对象。这样有点麻烦,我现在的代码都要改。。
      

  7.   

    因为我以前建的是继承自CEditView的视图类,现在不知道该怎么改才能让它可以多颜色
      

  8.   

    我用CRichEditView可以吗?不然的话我得从CView继承视图,然后在里面建个继承CRichEditCtrl类的对象。这样有点麻烦,我现在的代码都要改。。
    ----------------------------------------------
    CRichEditView可以的。