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()
{
// TODO: 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)