我做的一个聊天对话框,用自制的工具栏打开字体对话框后,里面的字号默认是四号,但可选择的字号只有12号,其他的字号怎么没有?代码如下:
         CHARFORMAT cf;
m_SendEdit.GetDefaultCharFormat( cf );
CFontDialog dlg( cf ); if( dlg.DoModal() == IDOK )
{
dlg.GetCharFormat( cf );
this->m_SendEdit.SetDefaultCharFormat( cf );
}
UpdateData(TRUE);
我哥们儿用这段代码就完全没问题,而我得要用下面这段代码才会显示完全,求大神指点!
         CHARFORMAT cf;
LOGFONT lf;
memset(&cf,0,sizeof(CHARFORMAT));
memset(&lf,0,sizeof(LOGFONT));
//判断是否选择了内容
BOOL m_bSelect = (m_SendEdit.GetSelectionType() != SEL_EMPTY) ? TRUE : FALSE;
if(m_bSelect)
m_SendEdit.GetSelectionCharFormat(cf);
else
m_SendEdit.GetDefaultCharFormat(cf);
//得到相关字体属性
BOOL bIsBold = cf.dwEffects & CFE_BOLD;
BOOL bIsItalic = cf.dwEffects & CFE_ITALIC;
BOOL bIsUnderline = cf.dwEffects & CFE_UNDERLINE;
BOOL bIsStrikeout = 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 = bIsStrikeout; CFontDialog dlg(&lf);
dlg.m_cf.rgbColors = cf.crTextColor;
if(dlg.DoModal() == IDOK)
{
dlg.GetCharFormat(cf); //获得所选字体的属性
if(m_bSelect)
m_SendEdit.SetSelectionCharFormat(cf); //为选定的内容设定所选字体
else
m_SendEdit.SetDefaultCharFormat(cf); //为将要输入的内容设定字体
}

UpdateData(TRUE);