一个LPCTSTR门类的变量pszOutput, 用TRACE("%s" pszOutput)可以正常打印, 但是SetWindowText显示为乱码
一个LPCTSTR类型的变量pszOutput, 用TRACE("%s", pszOutput)可以正常打印, 但是SetWindowText显示为乱码
函数如下:
void CDemoRedirector::WriteStdOut(LPCTSTR pszOutput)
{
TRACE("%s", pszOutput);
if (m_pWnd != NULL)
{
m_pWnd->SetWindowText(pszOutput);
}
}
传进来时是
TCHAR szOutput[256];
DWORD dwRead = 0;
if (!::ReadFile(m_hStdoutRead, szOutput, min(256, dwAvail),
&dwRead, NULL) || !dwRead) // error, the child might ended
break;
WriteStdOut(szOutput);
TRACE中可以正常打印出中英文, 但是SetWindowText中显示的全是乱码, 改如何修改?
------解决方案--------------------
TCHAR szOutput[256];
memset(szOutput,0,256);// 先置好 0;sz
------解决方案--------------------
是不是有中文啥的,资源的语言是不是和字符串语言不匹配?
------解决方案--------------------
这样呢?
函数如下:
void CDemoRedirector::WriteStdOut(LPCTSTR pszOutput)
{
TRACE("%s", pszOutput);
if (m_pWnd != NULL)
{
m_pWnd->SetWindowText(pszOutput);
}
}
传进来时是
TCHAR szOutput[256];
DWORD dwRead = 0;
if (!::ReadFile(m_hStdoutRead, szOutput, min(256, dwAvail),
&dwRead, NULL) || !dwRead) // error, the child might ended
break;
WriteStdOut(szOutput);
TRACE中可以正常打印出中英文, 但是SetWindowText中显示的全是乱码, 改如何修改?
------解决方案--------------------
TCHAR szOutput[256];
memset(szOutput,0,256);// 先置好 0;sz
------解决方案--------------------
是不是有中文啥的,资源的语言是不是和字符串语言不匹配?
------解决方案--------------------
这样呢?
- C/C++ code
CHAR szOutput[256] = {0}; DWORD dwRead = 0; if (!::ReadFile(m_hStdoutRead, szOutput, min(256, dwAvail), &dwRead, NULL) || !dwRead) // error, the child might ended break; WriteStdOut(CString(szOutput));
------解决方案--------------------
T类型的是跟据你的项目设置是否是Unicocde来决定倒底是Char,还是Wchar,而File里的内容不会跟据项目变化,那上死的。你需要跟据File的编码来正确编码你的字符串设置到窗口上。
------解决方案--------------------
汉字被拆分了!
min(256, dwAvail)不能保证汉字的完整性。
------解决方案--------------------
才回答了一个帖:
http://topic.****.net/u/20120528/08/341bd19b-1ef9-4709-84be-9d96dea4d7b9.html