从Unicode环境下得到的汉字怎样显示在ANSI环境下的编辑框中
由于我使用串口通信从PDA(UNICODE)上得到汉字显示在PC机(ANSI)上
我在PC机上(ANSI)是这么处理的:
1。先把接收到的数据保存到LPWSTR 数组中----------[UNICODE]
2。使用WideCharToMutiBytes()转换到LPSTR szRecv数组中---[ANSI]
3。我在调试器中看到已经是汉字了,但由于我需要把他实时显示在EDIT中
所以我使用了这个SendMessage(m_hEdit, WM_CHAR, (WPARAM) szRecv, 0)
怎么显示的却是乱码,原因估计是LPSTR szRecv数组是CHAR* 类型,而汉字是占两个CHAR, 此问题如果PDA和PC都是UNICODE没有问题
问题点数:0、回复次数:8Top
1 楼baodingwang(王)回复于 2004-08-08 19:51:07 得分 0
关注Top
2 楼crazyeagle(疯狂鹰)回复于 2004-08-09 10:57:44 得分 0
LPSTR szRecv是不是临时的,从而导致原内容过期,而不能正确显示!Top
3 楼yzx0023(无聊客)回复于 2004-08-09 19:40:47 得分 0
SendMessage的话szRecv是不是临时的应该没什么问题,用SetWindowText试试?Top
4 楼nbcool(载舟之水)回复于 2004-08-09 19:53:33 得分 0
在UNICODE下,
SendMessage(m_hEdit, WM_CHAR, (WPARAM) szRecv, 0)
用法错了
szRecv 参数应为TCHAR类型。
如果你不想打开 _UNICODE 的话,可能要加第4步。
Top
5 楼nbcool(载舟之水)回复于 2004-08-09 19:56:03 得分 0
用GB2312或者HZK倒是可以Top
6 楼crazyeagle(疯狂鹰)回复于 2004-08-10 09:01:23 得分 0
借问一声:LPSTR szRecv若是临时的,此函数过后,他的不会自动释放吗,而当另一个函数使用时,指针所指的内容还在? 不解????Top
7 楼yzx0023(无聊客)回复于 2004-08-10 09:39:20 得分 0
SendMessage是等待消息响应函数返回的,PostMessage就会出问题了Top
8 楼yzx0023(无聊客)回复于 2004-08-10 09:46:51 得分 0
SendMessage calls the window procedure for the specified window and does not return until the window procedure has processed the message. The PostMessage function, in contrast, posts a message to a thread's message queue and returns immediatelyTop




