您的位置:首页 > 其它

关于CRichEditCtrl中文字颜色的控制

2007-01-22 00:45 357 查看
我们在开发一个软件时经产需要输出一些文字或者告警,微软的MFC类库中为我们提供了功能强大的CEdit,可以让开发人员们简单的实现这一功能,但有时觉得CEdit的功能好像并不那么强大,比如我们想对输出的文字中的某一部分单独控制,改变其字体或颜色。于是CRichEditCtrl就显现出了他功能强大的一面。
那我们该如何使用CRichEditCtrl来实现我们的目的呢?
首先我们需要定义一个CRichEditCtrl的对象/或者从CRichEditView派生一个类,用来完成这一功能,用它的成员函数Creat创建一个RichEdit实体,具体请查看MSDN,下面举一个小的例子:

CRichEditCtrl m_rich;

m_rich.Create(ES_AUTOVSCROLL | ES_MULTILINE | ES_WANTRETURN |
WS_CHILD | WS_VISIBLE | WS_VSCROLL, rect, this, 1);

CHARFORMAT cf;
cf.dwEffects = 0
cf.crTextColor = RGB(255, 0, 0);
m_rich.SetDefaultCharFormat(cf);
用下面的代码实现我们的功能

CHARFORMAT m_cfDefault;//自定义字符格式

memset(&m_cfDefault, 0, sizeof(m_cfDefault));

m_cfDefault.cbSize = sizeof(CHARFORMAT);

m_cfDefault.dwMask = CFM_BOLD | CFM_COLOR | CFM_FACE | CFM_ITALIC | CFM_SIZE | CFM_STRIKEOUT | CFM_UNDERLINE;

m_cfDefault.crTextColor = RGB(0, 0, 0);//颜色

_tcscpy(m_cfDefault.szFaceName, _T("宋体"));//字体

m_cfDefault.bPitchAndFamily = FF_SWISS;

m_cfDefault.yHeight = 200;

CRichEditCtrl* pmyRichEditCtrl;

long nStart = 0;

long nEnd = pmyRichEditCtrl->GetTextLength();

m_pmyRichEditCtrl->SetSel(nStart, nEnd);

pmyRichEditCtrl->SetSelectionCharFormat(m_cfDefault);
在使用CRichEditCtrl/CRichEditView时请注意,首先要在应用程序类中的InitInstance方法中用AfxInitRich初始化RichEdit,或许你还不能通过编译,请在包含头文件afxrich.h。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: