用CRichEditView怎样才能让关键字显示不同颜色 就象VC那样的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 改变字色可以这样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); BOOL SetWordCharFormat( CHARFORMAT& cf );eee.dwEffects &=~CFE_AUTOCOLOR;eee.crTextColor = RGB(); 重载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);//动态替换 如果是用户copy过来的文本,而不是key in的就不会有OnChar过来,应该响应什么消息呢? 如果是用户copy过来的文本,而不是key in的就不会有OnChar过来,应该响应什么消息呢?应该是 OnChangeEdit1() 楼上大哥,我用的是view,不是ctrl 我做的一个小函数。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)); 对输入的字符进行辨别,如果是关键字就设置CHARFORMAT颜色属性 呵呵,在view里面可以获得ctrl的阿 在CRichEditView视中可以设置每个字符的格式属性。现在你要做的就是找出关键字,然后选择它--->然后SetSelectCharFormat();(CRichEditView中不知道有没有这个函数,控件里有,反正意思差不多) 已知RGB矩阵,如何生成相应的图片 用VC2005 做MFC程序时怎么将double数组写入到txt文件中 wxWidgets中线程里使用wxSOCKET 想做个网络管理的程序,snmp有啥作用?急 请教网页中调用自己开发的ocx的问题 要求程序在socket 和stdin上进行无阻塞的操作 傻瓜问题---怎样把自己用鼠标画的任意图像保存到一个 bmp文件中去 如何可以拖动窗口的大小? 怎样实现控件的边框? 如何让IE浏览器在没有焦点的情况下控制滚动条----求助 有对com+有较深了解的吗? 对VC的批判,我要打击大家学VC的积极性了……(转)
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);
eee.dwEffects &=~CFE_AUTOCOLOR;
eee.crTextColor = RGB();
应该是 OnChangeEdit1()
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));