在Unicode下
tempBuf 为char *
::PostMessage(hwnd,WM_XXXXXX,0,(LPARAM)tempBuf)发一个自定消息
消息响应函数里
CString str;
str.Format(_T("%d"),lParam);
但输出为乱码
请问 lParam转CString 该如何转
tempBuf 为char *
::PostMessage(hwnd,WM_XXXXXX,0,(LPARAM)tempBuf)发一个自定消息
消息响应函数里
CString str;
str.Format(_T("%d"),lParam);
但输出为乱码
请问 lParam转CString 该如何转
解决方案 »
- visual studio 2012 安装
- 求助,很菜的问题
- 请问在VC++工程中,怎样包含N多的Include目录?
- 菜单事件command和update_command_UI中为什么常用update_command_UI??
- 问个从没碰到过的问题
- 我在程序中获取运行的Word应用程序对象时,怎么不行啊?
- vc打印数据库记录!!!!求助!!!
- XML“热点、难点”问题:如何根据DTD对相应的XML文件中进行存取操作?(解答后给足够的分——此问题搞的俺很郁闷!)
- 请告诉我Com组件的知识,其作用?用什么编程语言开发,怎样开发?比如要开发ASP,php的com组成件如何下手?
- 诸位,在vc中可有目录树视类和文件列表视类?
- vc combobox控件
- 使用socket API编程,服务器端和客户端指定了相同的端口号,为何服务器端accept()取得的socket的端口号与前面定义的不同呢?
char *tempBuf = "测试";WCHAR *pwszTemp = NULL;
int nLen = MultiByteToWideChar(CP_ACP, 0, tempBuf , -1, NULL, 0);
pwszTemp = new WCHAR[nLen+1];
pwszTemp[nLen] = L'\0';
MultiByteToWideChar(CP_ACP, 0, tempBuf , -1, pwszTemp, nLen);::PostMessage(hwnd,WM_XXXXXX,0,(LPARAM)pwszTemp);CString str;
str.Format(_T("%s"),lParam);
delete lParam;
lParam = NULL;
其次既然发送的是字符串,你用%d来格式化,只能是一个地址,要说乱码应该是不会的。先要将lParam当作char*类型的字符串,然后用MultiByteToWideChar或者A2T宏进行编码转换,然后赋值给CString类型变量就可以了,或者试试:
CString str((char*)lParam);