本文主要是介绍MFC控件积累——CRichEdit控件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.Rich Edit的字体问题
在richedit20下,设置字体为某中文字体(比如楷体),输入汉字确实是楷体,但是一旦输入英文字符(在任何位置),这些英文字符字体立即变成了Arial字体(而且有意思的是,如果再输入汉字,汉字仍然是楷体的)。
这不是bug,这是RichEdit2.0的特性。
Dual-font: support The keyboard can automatically switch fonts when the active font is inappropriate for current keyboard, for example, Kanji characters in Times New Roman.
Smart font apply: Font change request does not apply Western fonts to Asian characters.
所以,英文字体和中文字体应该分别设置,英文字体默认的就是Arial。
解决方法:
去除控件自动字体功能。OnInitDialog 中使用如下代码:
CWnd *pRichEdit = GetDlgItem(IDC_YOUR_RICHEDIT_ID);
if (NULL != pRichEdit)
{
DWORD dwFontStyle = 0;
dwFontStyle = pRichEdit->SendMessage(EM_GETLANGOPTIONS, NULL, NULL);
if(dwFontStyle & IMF_AUTOFONT)
{
dwFontStyle &= ~IMF_AUTOFONT;
pRichEdit->SendMessage(EM_SETLANGOPTIONS, NULL, (LPARAM)dwFontStyle);
}
}
2.
这篇关于MFC控件积累——CRichEdit控件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!