LPCSTR转换LPCWSTR,插入到listbox都会有乱码呢?

来源:百度知道 编辑:UC知道 时间:2024/06/01 16:32:25
请问怎么转换呢?
SendMessage(hwndList,LB_ADDSTRING,0,(LPARAM)myLPCSTR);//myLPCSTR出错显示乱码
SendMessage(hwndList,LB_ADDSTRING,0,(LPARAM)myLPCWSTR);myLPCWSTR完全正确

但是我现在只有LPCSTR的值,得先转换成LPCWSTR我强制转换(LPCWSTR)LPCSTR还是会出乱码,正确的是怎么转的。

LPCWSTR 是UNICODE字符.

LPCSTR是ASCII字符.

他们的存储方式完全不同的,你强制转换没用的

要用个函数:

下面就可以了:
LPCSTR *p="中华人民共和国";
int Len=::MultiByteToWideChar (CP_ACP, 0, p, -1, NULL, 0);
LPWSTR *buf=new LPWSTR [Len];
MultiByteToWideChar(CP_ACP,0,p,-1,buf,Len); MessageBox(buf);

这里LPCSTR 就相当与char * ASCII字符。

这里LPWSTR 就相当于w_chart* UNICODE字符.

如果你是用VC6.0就不存在这个问题了.你肯定是用.net下的VC++