第2节 高级编辑控件
普通编辑框所有文字的颜色和字体都是统一的(记事本的效果),而高级编辑控件(CRichEditCtrl)是不同文字和段落可以设置不同的字体和颜色(写字板的效果)。另外,普通编辑框有内置的上下文菜单,而高级编辑控件内没有(需要手动编写代码来实现)。
使用高级编辑控件(RichEdit)主要注意以下几点。
1)必须在App类的InitInstance函数中,在程序刚启动时执行全局函数AfxInitRichEdit。否则含有RichEdit控件的对话框会弹出失败。
2)可以调用CWnd::SetWindowText函数设置整个RichEdit控件的文字,更多情况是调用CRichEditCtrl::ReplaceSel函数插入文字或者覆盖文字。
3)调用CRichEditCtrl::SetDefaultCharFormat函数设置控件内所有文字的格式(字体和颜色),包括已经输入的和将要输入的。
4)调用CRichEditCtrl::SetSelectionCharFormat函数为选中的文字设置格式。
5)调用CRichEditCtrl::SetWordCharFormat函数为将要输入的文字设置格式。
6)调用CRichEditCtrl::SetParaFormat函数为当前选择的段落设置格式。
创建一个工程名为“Chat”的对话框程序,演示使用RichEdit来显示聊天记录。
1)在主对话框中添加一些控件,包括Edit和RichEdit控件,如图9-4所示。

图9-4 编辑控件属性
2)修改控件的属性,见表9-2。
表9-2 主对话框的控件属性
(https://www.daowen.com)
3)修改程序启动函数InitInstance的代码。

4)使用类向导添加RichEdit的控件型关联变量,如图9-5所示。

图9-5 添加控件型关联变量
5)修改对话框初始化函数OnInitDialog的代码。

6)使用类向导添加按钮IDOK的消息映射函数,并修改代码。


编译并运行,测试代码。聊天历史中显示各种不同字体和颜色的文字,如图9-6所示。

图9-6 查看运行结果