RichEdit问题, 急!!!!!!!!!!!!

windtransient 2006-03-14 10:29:34
现在使用RichEdit中出现一些问题:
1.请问使用RichEdit2.0需要做哪些步骤
2.因为工程原来并不是unicode的, 现在想在RichEdit中显示中文\英文\日文和欧洲字体, 而且程序会在中\英\日三种操作系统下运行, 如何才能让显示正确

先谢谢啦
...全文
150 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
windtransient 2006-03-15
  • 打赏
  • 举报
回复
to :striking(硬撑者)
谢谢
但是前提是我可以肯定的告诉你, 工程不是unicode的, 而且现在没法改为unicode

不知道有没有其它办法?
TianChong 2006-03-14
  • 打赏
  • 举报
回复
包括RichEdit2.0的窗口要重新生成一个副本,指定为unicode的,用于显示中文和日文,而英文及欧洲文的可以使用原来的非unicode编码的窗口,所有的资源都要指定多套,分别对应中英日欧等,可以分别编译,也可以在程序里识别,如果是某国编码的则使用对应的DLL。
striking 2006-03-14
  • 打赏
  • 举报
回复
上面提到的 msftedit.dll xp系统下有的。
striking 2006-03-14
  • 打赏
  • 举报
回复
CString strDLL;
CString strClass ;


_AFX_RICHEDITEX_STATE::_AFX_RICHEDITEX_STATE()
{
m_hInstRichEdit20 = NULL ;
}

_AFX_RICHEDITEX_STATE::~_AFX_RICHEDITEX_STATE()
{
if (m_hInstRichEdit20 != NULL)
::FreeLibrary(m_hInstRichEdit20) ;
}

_AFX_RICHEDITEX_STATE _afxRichEditStateEx;

BOOL PASCAL AfxInitRichEditEx()
{
_AFX_RICHEDITEX_STATE *l_pState = &_afxRichEditStateEx;


OSVERSIONINFO os;
os.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&os);
if (os.dwPlatformId == VER_PLATFORM_WIN32_NT)
{
strDLL = _T("msftedit.dll");//注意这里
strClass = _T("RichEdit50W");//注意这里
}
else if (os.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)
{
strDLL = _T("RICHED20.DLL");
strClass = _T("RichEdit20A");
}

if (l_pState->m_hInstRichEdit20 == NULL)
l_pState->m_hInstRichEdit20 = LoadLibrary(strDLL);

return l_pState->m_hInstRichEdit20 != NULL ;
}



BOOL CRichEditEx::Create(DWORD dwStyle, const RECT& rcRect,
CWnd* pParentWnd, UINT nID)
{
if (!::AfxInitRichEditEx())
return FALSE ;
CRichEditCtrl* pWnd = this;
BOOL b = pWnd->CreateEx(WS_EX_ACCEPTFILES,strClass, NULL, dwStyle, rcRect, pParentWnd, nID);


return b;
}
2000以上系统, 可以正常显示欧洲语言。 前提是你的工程是unicode。
9x系统我还在研究中
windtransient 2006-03-14
  • 打赏
  • 举报
回复
可是我现在连欧洲字符都是乱码, 请问在richedit里需要什么特别的设置吗

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧