就象VC那样的

解决方案 »

  1.   

    改变字色可以这样
    CRichEditCtrl &edit = GetRichEditCtrl();
    CHARFORMAT cf;
    memset(&cf, 0, sizeof(CHARFORMAT));
    cf.crTextColor = RGB(255, 0, 0);
    cf.dwEffects = ~CFE_AUTOCOLOR;
    cf.dwMask = CFM_COLOR;
    edit.SetSel(0, -1);
    edit.SetWordCharFormat(cf);
      

  2.   

    BOOL SetWordCharFormat( CHARFORMAT& cf );
    eee.dwEffects &=~CFE_AUTOCOLOR;
    eee.crTextColor = RGB();
      

  3.   

    重载CRichEditCtrl::OnChar()函数,把每次Onchar()穿过来的,字符保存在一个临时变量里CString m_temp,然后把m_temp变量同关键字比较,若不同把CHARFORMAT cf.crTextColor=RGB(0,0,0),然后调用SetWordCharFormat(cf),若相同则cf.crTextColor=RGB(255,0,0),SetSel(GetTextLength()-m_temp.length()+1,GetTextLength),//选择关键字,ReplaceSel(m_temp);//动态替换
      

  4.   

    如果是用户copy过来的文本,而不是key in的就不会有OnChar过来,应该响应什么消息呢?
      

  5.   

    如果是用户copy过来的文本,而不是key in的就不会有OnChar过来,应该响应什么消息呢?
    应该是 OnChangeEdit1() 
      

  6.   

    楼上大哥,我用的是view,不是ctrl
      

  7.   

    我做的一个小函数。
    void CRichEdDlg::Message(CRichEditCtrl *rich,LPCTSTR lpszMessage,COLORREF clr)
    {
    // if(!GetDocument()->allowshow) return;
    CHARFORMAT cf;
    cf.cbSize = sizeof(CHARFORMAT);
    cf.dwMask = CFM_COLOR | CFM_FACE | CFM_SIZE | CFM_BOLD | CFM_ITALIC | CFM_UNDERLINE;
    // m_rich.GetSelectionCharFormat(cf);
    if (cf.dwEffects & CFE_AUTOCOLOR) cf.dwEffects -= CFE_AUTOCOLOR;
    // Get a color from the common color dialog.
    cf.crTextColor = clr;
    cf.dwMask = CFM_COLOR;
    rich->SetSelectionCharFormat(cf);
    rich->ReplaceSel(lpszMessage);
    //UnlockWindowUpdate();
    }
    用的时候,可以这样
    Message(&m_rich,"ASDF",RGB(255,0,0));
      

  8.   

    对输入的字符进行辨别,如果是关键字就设置CHARFORMAT颜色属性
      

  9.   

    呵呵,在view里面可以获得ctrl的阿
      

  10.   

    在CRichEditView视中可以设置每个字符的格式属性。现在你要做的就是找出关键字,然后选择它--->然后SetSelectCharFormat();(CRichEditView中不知道有没有这个函数,控件里有,反正意思差不多)