C++ 中发消息,c# 中接受消息时,所带字符串出现丢失问题

wuyangfei 2011-06-02 07:05:57
我在c++ 封装的dLL 中
DWORD data_utf32[] = {0x6c49, 0x5b57}; // 汉字
SendMessage(hWnd,uiMessage,(WPARAM)(LPTSTR)data_utf32,(WPARAM)(LPTSTR)data_utf32);

然后在c# 接收到消息,处理时出现问题

string barcode = Marshal.PtrToStringUni(wParam);

Console.WriteLine("barcode = " + barcode );

这时打印应该是 barcode = 汉字
然后实际打印是 barcode = 汉 (只能得到第一个字符,很奇怪)
(我没分了)
...全文
148 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
liun_li 2011-06-03
  • 打赏
  • 举报
回复
DWORD是四个字节的,所以,你这个实际空间占了八个字节,wParam只能发送四个字节,所以只显示一个,应该是这个原因吧
shenyi0106 2011-06-03
  • 打赏
  • 举报
回复
unicode是2字节16bit的
wuyangfei 2011-06-03
  • 打赏
  • 举报
回复
太感谢了!搞定!可以解释下为什么吗?为何16bit 的就可以
sjdev 2011-06-03
  • 打赏
  • 举报
回复
c#中是unicode,而你发的是……
shenyi0106 2011-06-03
  • 打赏
  • 举报
回复
USHORT data_utf32[] = {0x6c49, 0x5b57}; // 汉字

15,473

社区成员

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

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