CString strOld;
CString strNew;
GetDlgItem(IDC_EDIT_RECVDATA)->GetWindowText(strOld);
strNew.Format(_T("%s 说 %s"),inet_ntoa(addrRecv.sin_addr),wsabuf.buf);
strNew += "\r\n";
strNew += strOld;
GetDlgItem(IDC_EDIT_RECVDATA)->SetWindowText(strNew);MFC 在 CEdit 编辑框中显示乱码
原文应该是 127.0.0.1 说 Hello
现在变成了 ㈱⸷⸰⸰1멸몭몭몭몭몭 说 Hel췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍﷽﷽ꮫꮫꮫꮫﻮﻮ要如何解决,Thanks
CString strNew;
GetDlgItem(IDC_EDIT_RECVDATA)->GetWindowText(strOld);
strNew.Format(_T("%s 说 %s"),inet_ntoa(addrRecv.sin_addr),wsabuf.buf);
strNew += "\r\n";
strNew += strOld;
GetDlgItem(IDC_EDIT_RECVDATA)->SetWindowText(strNew);MFC 在 CEdit 编辑框中显示乱码
原文应该是 127.0.0.1 说 Hello
现在变成了 ㈱⸷⸰⸰1멸몭몭몭몭몭 说 Hel췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍췍﷽﷽ꮫꮫꮫꮫﻮﻮ要如何解决,Thanks
解决方案 »
- 不显示删除回复显示所有回复显示星级回复显示得分回复 关于强制转化一个问题 m_pGradientX = cvCreateImage( cvGetSize(im
- WM_NOTIFY是MFC定义的消息,还是WIN 32自身含有的消息?
- 一个对象在不同线程间工作的问题
- 怎样在CToolTipCtrl中让鼠标进入气泡后不消失
- 求助:帮忙看看下面的代码有什么问题?
- 生产者消费者问题
- class CAdjustSize : public CWnd
- 应聘兼职
- 救急!!救急!!!有实达铭泰的面试机会,有谁去过那里面试?能否提供一下经验。应该做那些准备?还有他们公司最近找人准备做那方面的软件???
- 谁给一个遍历硬盘中所有文件代码?高分。
- MFC中打开保存对话框如何添加文件格式的支持?
- 多线程与定时器问题
CString strNew=NULL;
GetDlgItem(IDC_EDIT_RECVDATA)->GetWindowText(strOld);
strNew.Format(_T("%s 说 %s"),_T(inet_ntoa(addrRecv.sin_addr)),_T(wsabuf.buf));
strNew += "\r\n";
strNew += strOld;
wchar_t *buffer = new wchar_t[i+1];
MultiByteToWideChar(CP_ACP,0,(const char *)wsabuf.buf,sizeof(wsabuf.buf),buffer,i);为什么 buffer 中只有一个字符
如 wsabuf.buf = “hello”
buffer 中只有 'h' 一个字符
wide char对asc字符的编码是“h0e0l0l0o0"
而C++默认将0当作字符串结尾看待实际上buffer中是“h0e0l0l0o0"
typedef struct __WSABUF
{ u_long len;
char FAR* buf;
} WSABUF, *LPWSABUF;让我们看看,wsabuf.buf的类型。
呵呵,它是个char FAR*.很显然它应该是个字符缓冲,通常的我们可以认为它是个字节流。并非一个字符串。
所以这个缓冲有可能存放的是unicode的编码数据,也可能是mcbs的数据。从楼主的需求看是想把ansi的"hello",转换成unicode的L"hello". 保存到buffer中// Convert ANSI to Unicode
_tsetlocale(LC_ALL, _T(""));//第一步取得需要转换的字符的长度
unsigned long lLen = wsabuf.len;//第二步取得转换成WCHAR,所需要的字符数
int cch = MultiByteToWideChar(CP_ACP,0, wsabuf.buf, lLen, NULL, 0); //第三步定义缓存并清零
WCHAR * wszBuffer = new WCHAR[cch + 1];
ZeroMemory((char *)wszBuffer, (cch+1)*sizeof(wszBuffer[0]));//第四步转换
MultiByteToWideChar( CP_ACP, 0, wsabuf.buf, lLen + 1, wszBuffer, cch);//输出
TRACE(L"%s\n", wszBuffer);//释放
delete [] wszBuffer;
这一行怎么没写上_T("");改成
strNew += _T("\r\n");