MFC应用实例:[41]Rich Edit使用
1、新建一个基于对话框的应用程序,工程名为BaseRichEdit。
![MFC应用实例:[41]Rich Edit使用](https://exp-picture.cdn.bcebos.com/aebdff86242fa872a67a4557bfdaf05e4b23e9f8.jpg)
2、如下图为对话框添加一个Rich Edit控件和一个按钮,三个复选框,三个单选按钮。
![MFC应用实例:[41]Rich Edit使用](https://exp-picture.cdn.bcebos.com/955ea0e434daf05e7c4682c2751d96d81919e5f8.jpg)
3、双击“设置字体颜色”按钮添加响应函数OnTextColor(),修改其响应函数OnTextColor()如下:void CBaseRichEditDlg::OnTextColor(){ // TODO: Add your control notification handler code here CHARFORMAT cf; memset (&cf, '\0', sizeof (CHARFORMAT)); cf.dwMask = CFM_COLOR; m_RichSample.GetSelectionCharFormat (cf); CColorDialog cc (cf.crTextColor);// cc.m_cc.lpCustColors = m_clrCustom; if (cc.DoModal () == IDCANCEL) return; cf.dwMask = CFM_COLOR; cf.dwEffects &= ~CFE_AUTOCOLOR; cf.crTextColor = cc.GetColor (); m_RichSample.SetSelectionCharFormat (cf); m_RichSample.SetFocus ();}
![MFC应用实例:[41]Rich Edit使用](https://exp-picture.cdn.bcebos.com/4b626771fe1d96d8227c9a932ccd0c6efaf2e1f8.jpg)
4、为三个复选按钮分别添加磨蓄贺痞响应函数,添加函数如下:void CBaseRichEditDlg::OnBold() //设置粗体复碚枞凇悄选框{ // TODO: Add your control notification handler code here CHARFORMAT cf;//结构体 m_RichSample.GetSelectionCharFormat (cf); cf.dwMask |= CFM_BOLD; cf.dwEffects ^= CFE_BOLD; m_RichSample.SetSelectionCharFormat (cf); if (cf.dwEffects & CFE_BOLD)//当前为粗体 m_ctlBold.SetCheck (1);//设置按钮被选中 else//当前不为粗体 m_ctlBold.SetCheck (0);//设置按钮未被选中 m_RichSample.SetFocus ();}void CBaseRichEditDlg::OnItalic() //设置斜体复选框{ // TODO: Add your control notification handler code here CHARFORMAT cf; m_RichSample.GetSelectionCharFormat (cf); cf.dwMask |= CFM_ITALIC; cf.dwEffects ^= CFE_ITALIC; m_RichSample.SetSelectionCharFormat (cf); if (cf.dwEffects & CFM_ITALIC)//当前为斜体 m_ctlItalic.SetCheck (1);//设置按钮被选中 else//当前不为斜体 m_ctlItalic.SetCheck (0);//设置按钮未被选中 m_RichSample.SetFocus (); }void CBaseRichEditDlg::OnUnderline() //设置下划线复选框{ // TODO: Add your control notification handler code here CHARFORMAT cf; m_RichSample.GetSelectionCharFormat (cf); cf.dwMask |= CFM_UNDERLINE; cf.dwEffects ^= CFE_UNDERLINE; m_RichSample.SetSelectionCharFormat (cf); if (cf.dwEffects & CFM_UNDERLINE)//当前带有下划线 m_ctlUnderline.SetCheck (1);//设置按钮被选中 else//当前不带有下划线 m_ctlUnderline.SetCheck (0);//设置按钮未被选中 m_RichSample.SetFocus ();}
![MFC应用实例:[41]Rich Edit使用](https://exp-picture.cdn.bcebos.com/fab31cb375d7997bf99121ebf9dade49600fd9f8.jpg)
![MFC应用实例:[41]Rich Edit使用](https://exp-picture.cdn.bcebos.com/8a17b3042e6817e91a84f54bd356d53da924cef8.jpg)
5、为三个单选按钮分别添加磨蓄贺痞响应函数,添加函数如下:void CBaseRichEditDlg::OnLett(){ // TOD晦倘佳鳎O: Add your control notification handler code here PARAFORMAT pf; m_RichSample.GetParaFormat(pf); pf.dwMask = PFM_ALIGNMENT; pf.wAlignment = PFA_LEFT; m_RichSample.SetParaFormat(pf); m_RichSample.SetFocus ();}void CBaseRichEditDlg::OnRight(){ // TODO: Add your control notification handler code here PARAFORMAT pf; m_RichSample.GetParaFormat(pf); pf.dwMask = PFM_ALIGNMENT; pf.wAlignment = PFA_RIGHT; m_RichSample.SetParaFormat(pf); m_RichSample.SetFocus ();}void CBaseRichEditDlg::OnCenter(){ // TODO: Add your control notification handler code here PARAFORMAT pf; m_RichSample.GetParaFormat(pf); pf.dwMask = PFM_ALIGNMENT; pf.wAlignment = PFA_CENTER; m_RichSample.SetParaFormat(pf); m_RichSample.SetFocus ();}
![MFC应用实例:[41]Rich Edit使用](https://exp-picture.cdn.bcebos.com/a965c6e9ccd2bb66023c7ef39b2a04e23fa2c6f8.jpg)
6、程序运行如下
![MFC应用实例:[41]Rich Edit使用](https://exp-picture.cdn.bcebos.com/a13bbe10bc33ec3869dee25c295f0c14c37b3cf9.jpg)