您的位置:首页 > 其它

VC 如何获取和改变一个RichEdit控件内的字体

2009-06-19 13:39 549 查看
首先了解一下CHARFORMAT结构

SetDefaultCharFormat(   CHARFORMAT&   cf   );
typedef   struct   _charformat   {
UINT           cbSize;
_WPAD         _wPad1;
DWORD         dwMask;
DWORD         dwEffects;
LONG           yHeight;
LONG           yOffset;
COLORREF   crTextColor;
BYTE           bCharSet;
BYTE           bPitchAndFamily;
TCHAR         szFaceName[LF_FACESIZE];
_WPAD         _wPad2;
}   CHARFORMAT;

其中bCharSet有如下值

lfCharSet
Specifies   the   character   set.   The   following   values   are   predefined:
ANSI_CHARSET
BALTIC_CHARSET
CHINESEBIG5_CHARSET
DEFAULT_CHARSET
EASTEUROPE_CHARSET
GB2312_CHARSET
GREEK_CHARSET
HANGUL_CHARSET
MAC_CHARSET
OEM_CHARSET
RUSSIAN_CHARSET
SHIFTJIS_CHARSET
SYMBOL_CHARSET
TURKISH_CHARSET

Korean   Windows:
JOHAB_CHARSET
Middle-Eastern   Windows:
HEBREW_CHARSET
ARABIC_CHARSET
Thai   Windows:
THAI_CHARSET

OnChangeFont() 是对话框中一按钮消息响应函数

void CTransformDlg::OnChangeFont()
{
// TODO: Add your control notification handler code here
CHARFORMAT cf;
LOGFONT lf;
memset(&cf, 0, sizeof(CHARFORMAT));
memset(&lf, 0, sizeof(LOGFONT));
//判断是否选择了内容
BOOL m_bSelect = (m_RichEditCtrlTS.GetSelectionType() != SEL_EMPTY) ? TRUE : FALSE;
if (m_bSelect) {
m_RichEditCtrlTS.GetSelectionCharFormat(cf);
} else {
m_RichEditCtrlTS.GetDefaultCharFormat(cf);
}
//得到相关字体属性
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;
sprintf(lf.lfFaceName, cf.szFaceName);

//strcpy(lf.lfFaceName, cf.szFaceName);
CFontDialog dlg(&lf);
dlg.m_cf.rgbColors = cf.crTextColor;
if (dlg.DoModal() == IDOK) {
dlg.GetCharFormat(cf); //获得所选的字体属性,如字体、颜色、大小等
if (m_bSelect)
m_RichEditCtrlTS.SetSelectionCharFormat(cf); //为选定的内容设定所选字体
else
m_RichEditCtrlTS.SetWordCharFormat(cf); //为将要输入的内容设定字体

//m_RichEditCtrlTS.SetDefaultCharFormat(cf); //设置输入框内所有字符的字体,包括已经输入的和将要输入的字符

}

}

CFont   说明

CFont   font;
VERIFY(font.CreateFont(
12,                                                 //   nHeight
0,                                                   //   nWidth
0,                                                   //   nEscapement
0,                                                   //   nOrientation
FW_NORMAL,                                   //   nWeight
FALSE,                                           //   bItalic
FALSE,                                           //   bUnderline
0,                                                   //   cStrikeOut
ANSI_CHARSET,                             //   nCharSet
OUT_DEFAULT_PRECIS,                 //   nOutPrecision
CLIP_DEFAULT_PRECIS,               //   nClipPrecision
DEFAULT_QUALITY,                       //   nQuality
DEFAULT_PITCH   |   FF_SWISS,     //   nPitchAndFamily
"Arial"));                                   //   lpszFacename
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: