Win32 MessageBoxW输出乱码问题

CaesireKin 2013-08-27 10:49:19
好久没来论坛了,小弟今天遇到了一个问题,所以来此求助各位大神们了
事情是这样的,我用一个wchar_t*获取了OPENFILENAMEW结构的lpstrFile字段的数据,获取的数据本身是没乱码的,但是用MessageBox输出后就乱码了,代码如下
wchar_t* fileName;

...省略一些目前不必要的代码

case ID_MENU_OPEN:
openFile = OpenFileDialog(hWnd); //这里获取的数据正确
fileName = openFile.lpstrFile; //这里获得到的fileName仍然尚未乱码
MessageBoxW(hWnd,fileName,TEXT("NOTICE"),MB_OK); //但是在这里,使用MessageBox输出的时候就乱码了
break;

求破ToT
...全文
225 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaohuh421 2013-08-28
  • 打赏
  • 举报
回复
引用 3 楼 chn3698 的回复:
[quote=引用 2 楼 studyCBC 的回复:] 需要先转fileName 为wchar类型
用wchar_t*类型的不行吗?毕竟MessageBoxW的第二个参数要求的不是LPWSTR吗?[/quote] 因为你的工程环境是 多字符集 即ASCII的, 所以 openFile.lpstrFile应该也是ASCII的. 所以你想转换成wchar_t就需要MultiByteToWideChar等函数.
buyong 2013-08-28
  • 打赏
  • 举报
回复
maybe unicode to ansi
CaesireKin 2013-08-28
  • 打赏
  • 举报
回复
引用 2 楼 studyCBC 的回复:
需要先转fileName 为wchar类型
用wchar_t*类型的不行吗?毕竟MessageBoxW的第二个参数要求的不是LPWSTR吗?
神-气 2013-08-28
  • 打赏
  • 举报
回复
你试试:MessageBoxA(hWnd,fileName,TEXT("NOTICE"),MB_OK); 这个不乱码的话那就是你的filename实际内容是char*
CaesireKin 2013-08-28
  • 打赏
  • 举报
回复
引用 5 楼 xiaohuh421 的回复:
[quote=引用 3 楼 chn3698 的回复:] [quote=引用 2 楼 studyCBC 的回复:] 需要先转fileName 为wchar类型
用wchar_t*类型的不行吗?毕竟MessageBoxW的第二个参数要求的不是LPWSTR吗?[/quote] 因为你的工程环境是 多字符集 即ASCII的, 所以 openFile.lpstrFile应该也是ASCII的. 所以你想转换成wchar_t就需要MultiByteToWideChar等函数.[/quote] 谢谢,我先去试一下
七擒关羽 2013-08-27
  • 打赏
  • 举报
回复
需要先转fileName 为wchar类型
赵4老师 2013-08-27
  • 打赏
  • 举报
回复
MultiByteToWideChar

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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