这个平板是win8系统,之前这套系统在xp、vista下都进行过系统测试的,都没有出现过这种问题,决定查找一下原因。
此富文本框是使用的DUILIB开源界面库的RichEdit控件进行实现的,通过一下午的查找原因,找到了两个解决方案:
A、通过提供的QQdemo,发现unicode编译出的exe,在win8下输入中文时,richedit可正常显示中文,而多字节编译的exe,也是乱码,估解决方案之一就是将其工程改成unicode字符键进行编译,可正常使用richedit;
B、另一解决方案,就不得不说微软的不按套路出牌了,在查看UIRichEdit.cpp的源码时发现了这样的一段代码:
PCreateTextServices TextServicesProc;
HMODULE hmod = LoadLibrary(_T("msftedit.dll"));
if (hmod)
{
TextServicesProc = (PCreateTextServices)GetProcAddress(hmod,"CreateTextServices");
}
if (TextServicesProc)
{
HRESULT hr = TextServicesProc(NULL, this, &pUnk);
}
hr = pUnk->QueryInterface(IID_ITextServices,(void **)&pserv);
怀疑是不是win8下的msftedit.dll与xp、vista下的有差别导致的显示乱码问题,通过拷贝msftedit.dll到项目文件中,在win8下运行,发现richedit输入中文显示正常。估拷贝msftedit.dll到自己的安装目录下,同样可以解决乱码的问题。 msftedit.dll是richedit4.0的动态库,之前的有richedit32、richedit20,都可以在windows\system32下找的到。
显示效果如下: