/*
*函数: OnBnClickedBtnFont
*功能: 字体
*@Param :
*@return
*/
void CRadioMsgDlg::OnBnClickedBtnFont()
{
LOGFONT lf;
memset(&lf, 0, sizeof(LOGFONT));
//判断是否选择了内容
//得到相关字体属性
BOOL bIsBold = m_cfSend.dwEffects & CFE_BOLD;
BOOL bIsItalic = m_cfSend.dwEffects & CFE_ITALIC;
BOOL bIsUnderline = m_cfSend.dwEffects & CFE_UNDERLINE;
BOOL bIsStrickout = m_cfSend.dwEffects & CFE_STRIKEOUT;
//设置属性
lf.lfCharSet = m_cfSend.bCharSet;
lf.lfHeight = m_cfSend.yHeight/15;
lf.lfPitchAndFamily = m_cfSend.bPitchAndFamily;
lf.lfItalic = bIsItalic;
lf.lfWeight = (bIsBold ? FW_BOLD : FW_NORMAL);
lf.lfUnderline = bIsUnderline;
lf.lfStrikeOut = bIsStrickout;
wcscpy(lf.lfFaceName, m_cfSend.szFaceName);
CFontDialog dlg(&lf,CF_SCREENFONTS,NULL,this);
dlg.m_cf.rgbColors = m_cfSend.crTextColor; if (dlg.DoModal() == IDOK)
{
dlg.GetCharFormat(m_cfSend);//获得所选字体的属性
int nSize=dlg.GetSize();
int nWeight=dlg.GetWeight(); //m_reditContent.SetShowFont(m_cfSend); m_reditContent.SetWordCharFormat(m_cfSend); m_reditContent.SetSelectionCharFormat(m_cfSend);
m_nFontHeight = m_cfSend.yHeight;//字体大小
m_color = m_cfSend.crTextColor;
m_FontName = m_cfSend.szFaceName;
bIsBold = m_cfSend.dwEffects & CFE_BOLD;
bIsItalic = m_cfSend.dwEffects & CFE_ITALIC;
bIsUnderline = m_cfSend.dwEffects & CFE_UNDERLINE;
bIsStrickout = m_cfSend.dwEffects & CFE_STRIKEOUT; if (bIsBold)
{
m_bIsBold = true;
m_btnBold.SetBtnState(1);
}
else
{
m_bIsBold = false;
m_btnBold.SetBtnState(0);
}
if (bIsItalic)
{
m_bIsItalic = true;
m_btnItalic.SetBtnState(1);
}
else
{
m_bIsItalic = false;
m_btnItalic.SetBtnState(0);
}
if (bIsUnderline)
{ m_bIsUnderLine = true;
m_btnUnderLine.SetBtnState(1);
}
else
{ m_bIsUnderLine = false;
m_btnUnderLine.SetBtnState(0);
}
if (bIsStrickout)
{ m_bIsStrickout = true;
}
else
{
m_bIsStrickout = false;
}
}
m_reditContent.SetFocus();
}
////----------------如上,设置字字体或,选中英文 可以设置正常, 再次输入,出现一种比较粗的字体,但不是粗体 这是啥原因。
{
// TODO: Add your control notification handler code here
CHARFORMAT cf;
LOGFONT lf;
memset(&cf, 0, sizeof(CHARFORMAT));
memset(&lf, 0, sizeof(LOGFONT));
m_EditInput.GetDefaultCharFormat(cf);//m_EditInput是跟编辑框关联的CRichEdit变量 //得到相关字体属性
BOOL bIsBold = cf.dwEffects & CFE_BOLD;
BOOL bIsItalic = cf.dwEffects & CFE_ITALIC;
BOOL bIsUnderline = cf.dwEffects & CFE_UNDERLINE;
BOOL bIsStrickout = cf.dwEffects & CFE_STRIKEOUT;//删除线
//设置属性
lf.lfCharSet = cf.bCharSet;
lf.lfHeight = cf.yHeight/15;
lf.lfPitchAndFamily = cf.bPitchAndFamily;
lf.lfItalic = bIsItalic;
lf.lfWeight = (bIsBold ? FW_BOLD : FW_NORMAL);
lf.lfUnderline = bIsUnderline;
lf.lfStrikeOut = bIsStrickout;
_stprintf(lf.lfFaceName, cf.szFaceName); CFontDialog dlg(&lf);
dlg.m_cf.rgbColors = cf.crTextColor;
if (dlg.DoModal() == IDOK)
{
dlg.GetCharFormat(cf);//获得所选字体的属性
m_EditInput.SetDefaultCharFormat(cf);
}
}以上代码经过测试,准确无误的,你看看