richedit 2.0 引入了新的一个特性 IMF_AUTOFONT。设置了这个属性后当键盘布局改变后richedit 会自动的设置适合当前布局的字体和字符集。所以在richedit中调用
SendMessage( EM_SETCHARFORMAT, SCF_ALL, (LPARAM)&crf);
或会发现对中文字符设置的字体生效的,但是英文字符未生效。
可以去掉这个属性:
// 去掉 richedit2.0 默认设置了的 autofont
BOOL CNetRichEditCtrl::DisableAutoFont()
{
DWORD dwLanOptions = SendMessage(EM_GETLANGOPTIONS,0,0);
if (dwLanOptions&IMF_AUTOFONT)
{
dwLanOptions = dwLanOptions&~IMF_AUTOFONT;
SendMessage(EM_SETLANGOPTIONS,0,dwLanOptions);
return TRUE;
}
return FALSE;
}