Win32 MessageBoxW输出乱码有关问题

Win32 MessageBoxW输出乱码问题本帖最后由 chn3698 于 2013-08-27 10:50:11 编辑好久没来论坛了,小弟今天

Win32 MessageBoxW输出乱码问题
本帖最后由 chn3698 于 2013-08-27 10:50:11 编辑 好久没来论坛了,小弟今天遇到了一个问题,所以来此求助各位大神们了
事情是这样的,我用一个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 win32 乱码
[解决办法]
MultiByteToWideChar

[解决办法]
需要先转fileName 为wchar类型
[解决办法]

引用:
Quote: 引用:

需要先转fileName 为wchar类型


用wchar_t*类型的不行吗?毕竟MessageBoxW的第二个参数要求的不是LPWSTR吗?


因为你的工程环境是  多字符集 即ASCII的, 所以 openFile.lpstrFile应该也是ASCII的. 所以你想转换成wchar_t就需要MultiByteToWideChar等函数.
[解决办法]
你试试:MessageBoxA(hWnd,fileName,TEXT("NOTICE"),MB_OK);
这个不乱码的话那就是你的filename实际内容是char*