1. 开发工具:VS2005/VS2008,VC++
2. 环境:XP/Win7 英文版,区域设置为俄罗斯
3. 程序:资源文件为俄文的com dll。
现象:程序中很多动态创建的Combobox或ComboboxEx控件显示乱码,调试发现该控件没有默认的字体,调用GetFont返回NULL,于是在创建控件后调用SendMessage(WM_SETFONT, GetStockObject(DEFAULT_GUI_FONT), 1),运行程序发现大部分问题解决,个别控件还是有问题。于是用下面代码:
1. 在类中声明一个CFont的成员变量m_font;
2. 调用VERIFY(m_font.CreateFont(
14, // 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
_T("Arial"))); // lpszFacename
3. 调用SetFont(&m_font)
4. 问题解决。
总结:测试中,只发现俄文有这样的问题,其他语言没有,怀疑是不是windows对俄语还是支持不好,抑或是Combobox控件默认情况下对俄语有bug,没有深入研究。
希望大家发表看法,谢谢!