在使用Duilib中的Richedit控件时,输入中文出现乱码,然而输入英文却能正常显示,上网查询方法时,可将代码采用Unicode编码模式,因改动较大,所以另寻其他方式,跟CRicheditUI中的实现代码,Duilib中Richedit采用msftedit.dll动态库中的服务。
PCreateTextServices TextServicesProc = NULL;
HMODULE hmod = LoadLibrary(_T("
msftedit.dll"));
if (hmod)
{
TextServicesProc = (PCreateTextServices)GetProcAddress(hmod,"CreateTextServices");
}
if (hmod)
{
TextServicesProc = (PCreateTextServices)GetProcAddress(hmod,"CreateTextServices");
}
if (TextServicesProc)
{
HRESULT hr = TextServicesProc(NULL, this, &pUnk);
}
{
HRESULT hr = TextServicesProc(NULL, this, &pUnk);
}
hr = pUnk->QueryInterface(IID_ITextServices,(void **)&pserv);
微软
RichEditCtrl有多个版本,还有每个版本的微升级版本,如2.1和2.5版本。富文本框控件Dll形式提供的,除了1.0版本外,其他版本主要的就是在riched20.dll中。高级版本(版本号大于等于2.0)的都使用riched20.dll。
而Duilib中的msftedit.dll主要Windows XP SP1, Tablet, Vista适用。也看到可以下载最新或者在本地查找msftedit.dll库,添加到程序执行目录下,没有效果。
后将msftedit.dll改为riched20.dll,后编译解决该问题。