我们在开发一个软件时经产需要输出一些文字或者告警,微软的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。