吐血求救!!!一个WinCE程序中文显示的问题……

xystar 2001-11-21 03:39:35
今日编写一WinCE程序遇到了一些麻烦。请帅哥们帮帮忙。
问题描述如下:
我有一个二进制ANSI数据文件。我的程序是按照条件从这个数据文件中检

索数据,然后将检索结果显示到一个EditBox中去。我使用的开发工具是

eVC++ 3.0,Emulator是HandHeld PC Pro Emulation和Pocket PC

Emulation。请帅哥们看清楚我的问题:
因为我现在无法将这个二进制ANSI数据文件全部改成Unicode字符集(因

为条件不允许而且改动量也太大)。所以,我只想在检索之后,将检索的结果(

其实就是一个char *型字符串而已)转换成可以显示的Unicode字符,然后显示到一

个EditBox里面去。理论上可以使用MultiByteToWideChar把char *转换为

TCHAR *,可是我发现:在使用MultiByteToWideChar转换的时候,跟踪调

试时,发现转换以后就变成乱码了。显示的结果自然也都是乱码!!无论我怎样

变换参数,乱码就是乱码。
可是,如果你在Windows下使用Ctrl+C复制一段中文文字,然后到虚拟器

上Ctrl+V,则中文就可以正常显示!!我通过程序知道了在Ctrl+V的时候,系

统就自动将之转换成了Unicode码了。但是奇怪的是:为什么我用函数转换却不

能成功呢??怎样才能正常显示中文呢??

当然,直接使用_T("神啊!救救我吧")可以显示中文,但是如何将char *

中存放的中文字串显示到诸如EditBox这样的控件中去呢??因为显示必然要使

用SetWindowText(),而它不接受char *类型的,怎么办呢??这个问题已

经困扰我半个多月了,我去了很多地方、找了很多资料,到现在还是没能解决,

请有过WinCE编程经验的朋友们一定要帮我看看这个问题,如能解决,必当重谢


另外,有个朋友让我把对话框和EditBox字体设置一下,可是不行啊~唉…



我的联系方式:
E-mail : xuyu@transtar.com.cn
QQ : 786727
Website :www.epubcn.com
...全文
228 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
xystar 2001-11-26
  • 打赏
  • 举报
回复
得了,这个问题我已经懒得说了。
最后说一句:我所说的一切都是建立在英文的虚拟器上!
而英文的虚拟器上想要按照我的那种方法实现现在是根本没有可能的。

除非你把数据文件全部换成Unicode,否则,啥都别想弄出来。
horris 2001-11-25
  • 打赏
  • 举报
回复
奇怪,看你的问题感觉你用的是中文WinCE,因为你还提到如何设EditBox的(中文)字体。中文WinCE用MultiByteToWideChar是决没问题的,我这么做过,没遇到任何困难。难道你是给国外开发掌上设备的程序吗?如果用的是英文WinCE,我就爱莫能助,WinCE本来就讲究模块化最小化,很可能没有装中文的Unicode字符映射。
Purple_Z 2001-11-25
  • 打赏
  • 举报
回复
我也遇到这个问题,当时就觉得很奇怪,
后来我只好把Ansi格式的文本给变成Unicode了才可以
Suddy 2001-11-25
  • 打赏
  • 举报
回复
老问题了,如果你的资料是GB2312的,检索的时候用GB2312 显示的时候用UNICODE
xystar 2001-11-24
  • 打赏
  • 举报
回复
1。用第三方汉化程序。如CESTAR,小刀等
2。编程序直接画上去,不要说方法比较傻哦,确实有人这样做的,当然他还有其他的目的
3。将HP545中WINDOWS下的WINCE.NLS拷入本机WINCE仿真环境WINDOWS目录下,即可正常显示中文,输入中文方法为:先启动POCKEDPC仿真环境,设置该仿真POCKETPC的区域为Chinese(P.R.C),再启动EVC,运行开发的程序即可,输入时无法直接输入,可用NOTEPAD输入后粘帖入输入框中即可。

以上为转载,具体是否能实现,待我下个星期回单位以后试试看。

不过楼上的楼上那位老兄是说在中文WinCE下,我们现在说的是如何在英文WinCE下解决中文显示的问题,不对口。^_^
honeycombs 2001-11-24
  • 打赏
  • 举报
回复
大侠们,俺也在开发 WINCE ,这个问题也困扰俺好长时间,有好点子也让俺知道知道!
honeycombs@sina.con
horris 2001-11-24
  • 打赏
  • 举报
回复
用这个试试:
MultiByteToWideChar(CP_ACP,0,strMBCS,-1,strUnicode,lenUnicode);
to yrj(机枪):只要是中文WinCE就行,我在中文WinCE上用MultiByteToWideChar/WideCharToMultiByte转换过带中文的字符串,一点问题也没有。
yrj 2001-11-23
  • 打赏
  • 举报
回复
根据你的方法,没有办法显示中文的。
因为ANSI转UNICODE的函数只是将单字节的ANSI转换成双字节的而已,并没有将GB转换成UNICODE
所以你没有办法显示中文但英文的可以。
你只有使你的文件中的中文文本用UNICODE的形式保存,或用转换软件将ANSI GB文本文件转换成
UNICODE的编码格式,注意在UNICODE文本文件前用FF FE做为UNICODE文本文件的表示,要跳过。
lifehappy 2001-11-22
  • 打赏
  • 举报
回复
你显示的是中文?
xystar 2001-11-22
  • 打赏
  • 举报
回复
不行的啦~出来的还是乱码:、(
xystar 2001-11-22
  • 打赏
  • 举报
回复
是丫~不是中文我就不问了:、(
lifehappy 2001-11-21
  • 打赏
  • 举报
回复
用 MessageBox(CString(char *)),
_variant_t(char *)

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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