注意:MFC中使用RichEdit控件时需要在RichEditUse.cpp文件中的InitInstance()函数中添加初始化函数AfxInitRichEdit2();

1、RichEdit控件简单应用

为方便演示本例创建RichContrl基于对话框,生成CRichContrlDlg.h和CRichContrlDlg.cpp两个文件,在.cpp文件中宏定义:

 #define     COLOR_BLUE       RGB(0, 0, 128)
 #define     COLOR_RED        RGB(0xFF, 0, 0)
 #define     COLOR_GREEN      RGB(0x2e, 0x8b, 0x57)
 #define     COLOR_WHITE      RGB(255, 255, 255)
 #define     COLOR_BLACK      RGB(0, 0, 0)
 #define     COLOR_YELLOW     RGB(250, 250, 60)

 从工具箱中拖拽richedit控件、editcontrl控件、按钮到对话框中,ID分别为IDC_RICHEDIT_SHOW、IDC_EDIT_INPUT,然后在CRichContrlDlg.h中申明函数void DrawTextToREdit(CString szMessage, UINT uiREditId, COLORREF crTextCr, COLORREF crBackCr, int nFontSize);返回CRichContrlDlg.cpp实现函数DrawTextToREdit()如下:

 1 void CRichContrlDlg::DrawTextToREdit(CString szMessage, UINT uiREditId, COLORREF crTextCr, COLORREF crBackCr, int nFontSize)
 2   {
 3       CRichEditCtrl* pREdit = (CRichEditCtrl*)this->GetDlgItem(uiREditId);
 4       CFont font;
 5       font.CreateFont(
 6           nFontSize,            //字体的高度
 7           0,                    //字体的宽度
 8           0,                    //字体的倾斜角
 9           0,                    //字体的倾斜角
10          FW_LIGHT,             //字体的粗细
11          FALSE,                //字体是否为斜体
12          FALSE,                  //字体是否为下划线
13          FALSE,                //字体是否有删除线
14          ANSI_CHARSET,         //字体使用的字符集
15          OUT_TT_PRECIS,        //指定如何选择合适的字体
16          CLIP_DEFAULT_PRECIS,  //用来确定裁剪的精度
17          PROOF_QUALITY,        //怎么样跟选择的字体相符合
18          FF_MODERN | FIXED_PITCH,//距标志和属性标志
19          _T("楷体")            //字体的名称
20      );
21      this->GetDlgItem(uiREditId)->SetFont(&font);
22      pREdit->SetBackgroundColor(FALSE, crBackCr);
23      CHARFORMAT cf;
24      ::memset(&cf, 0, sizeof(cf));
25      cf.dwMask = CFM_COLOR | CFM_BOLD;
26      cf.dwEffects = CFE_BOLD;
27      cf.crTextColor = crTextCr;
28      pREdit->SetDefaultCharFormat(cf);
29      this->SetDlgItemText(uiREditId, szMessage);
30  }
View Code

相关文章: