如何在非UNICODE对话框的Edit框内输入Unicode码? 我的工程是_MBCS的,但是现在需要我修改一些Unicode码,要制作一个编辑界面可以修改Unicode码,请问有什么办法可以在_MBCS的工程中让其添加的Edit框是Unicode的? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你所谓的unicode码是什么形式的?虽然文字存储是有所闻的编码问题,但是一旦显示到文本框,其实没有所谓的unicode形式的文字和mcbs文字。一个unicode的“中文”和一个MCBS的“中文”,一点区别没有。如果你要在editbox中显示原本是unicode的文本,只要用W2T转换成MCBS即可 输入的内容跟UNICODE和非UNICODE没有关系的,如果是UNICODE文本要转换成_MBCS只要用WideCharToMultiByte转换一下就行了 我的那个Edit框主要会用来显示韩文,日文等等语言,我的理解是若不是Unicode的编辑框的话,在简体系统下应该会显示成乱码,而我需要在这个Edit框内可以输入和看到韩文和日文等语言 就是说我在给客户编辑前有的文字是Unicode的,这样我需要显示给客户看,且需要让其可以修改(看到的不能是乱码),修改后我又需要得到Unicode码 输入显示的时候跟UNICODE和非UNICODE没有关系,如果要保存输入的内容,则用WideCharToMultiByte转换,然后再保存... 有关系啊,不信你自己找个普通的Edit框输入个韩文看看,能不能看到?Edit框显示的时候需要一个数据来源,而这个数据来源如果是非Unicode时候,这个码若是汉字和韩文等的公用区域,Edit框如何显示?它会根据当前系统语言来做确认。 不是跟你说了么,只要你做好转换,把unicode转换成泥当前的MCBS格式的即可。如果你有韩文,恐怕就不行了,因为如果你文本内有多种语言时,单一MCBS是不支持显示多种语言的,你必须切换成unicode工程。 hmm,我也觉得你提问很不合理,切换工程类型那么简单,你为什么不原意切换?别人给你合理的建议你似乎还很生气,那你还问什么?如果你支持多语言,在MCBS下我记得是不可能的 我当然希望别人给我建议...也没有很生气~,~,只是对这个建议很无奈,大家都知道转成UNICODE工程可以解决这个问题,跑来提问当然是因为不想这样做~,~ 我理解中项目的_MBCS和UNICODE只是在头文件中的#define的区别,我的想法是在某几个文件编译时候通过一些预编译设置来修改这几个文件的编译项目。但是自己试了一下没成功。所以来这边请教高手。 使用Unicode可以免去很多问题滴~ 把你的编辑框写在一个Unicode的dll里。(大概就是你的dll里能导出一个派生于CEdit的类)在dll做一个接口函数:void GetEditText(char* buf,int MaxSize){TCHAR WindowText[10000];::SendMessage(EditWnd,WM_GETTEXT,(WPARAM)(sizeof(WindowText)/sizeof(TCHAR)),(LPARAM)WindowText); //这时获得的是Unicode字符串//再转换成c字符串,并保存到buf里就可以了 }以上没有经过编译测试,纯属想法,希望有所帮助!阿弥陀佛! 看来大家对这个问题的建议好像都比较偏向直接用UNICODE工程,好几天没人继续讨论了,我先结贴吧 cwnd中创建htmlview的问题 讨论下迅雷中抓取flash的原理 关于Xtreme Toolkit pro12.0在vc2005下运行的问题 读vnc源码遇到的问题 怎么用程序把一个JSP查询系统里面的数据导出来? 我的程序没有窗口,怎么捕获系统发过来的消息? 两个小问题 send 在win2003中的问题? vc中有没和VB Redim Preserve 一样功能的函数 欲创建一控件,ID号在哪儿添 请问有没有解析windows消息的值的函数或者宏? vc6.0:在MFC框架中 运用CHtmlView 实现WEB网页嵌入
在dll做一个接口函数:
void GetEditText(char* buf,int MaxSize)
{
TCHAR WindowText[10000];
::SendMessage(EditWnd,WM_GETTEXT,(WPARAM)(sizeof(WindowText)/sizeof(TCHAR)),(LPARAM)WindowText); //这时获得的是Unicode字符串
//再转换成c字符串,并保存到buf里就可以了 }以上没有经过编译测试,纯属想法,希望有所帮助!阿弥陀佛!