mfc中通过Edit Control进行显示txt文本,里边有中文的,乱码,如何解决。
```c++
void JBXX::OnBnClickedButton1()//读取
{
// TODO: 在此添加控件通知处理程序代码
TCHAR szFilter[] = _T("文本文件(*.txt)|*.txt|所有文件(*.*)|*.*");
CFileDialog fileDlg(TRUE, _T("txt"), NULL, 0, szFilter, this);
if (fileDlg.DoModal() == IDOK) {
CString strFilePath = fileDlg.GetPathName();
SetDlgItemText(IDC_EDIT_TXT, strFilePath);
//CFile CStdioFile
CStdioFile sourceFile;
CFileException ex;
if (!sourceFile.Open(strFilePath, CFile::modeRead, &ex)) {
TCHAR szError[1024];
ex.GetErrorMessage(szError, 1024);
MessageBox(szError, _T("打开文件"));
return;
}
CString buf;
while (sourceFile.ReadString(buf)) {
m_textzhi = m_textzhi + buf + _T("\r\n");
}
sourceFile.Close();
UpdateData(false); // 将变量m_edit,更新到控件中。
}
}
void JBXX::OnBnClickedButton2()//另存为
{
// TODO: 在此添加控件通知处理程序代码
TCHAR szFilter[] = _T("文本文件(*.txt)|*.txt|所有文件(*.*)|*.*");
CFileDialog fileDlg(TRUE, _T("txt"), NULL, 0, szFilter, this);
CString strFilePath;
if (fileDlg.DoModal() == IDOK) {
strFilePath = fileDlg.GetPathName();
}
CStdioFile dstFile;
CFileException ex;
if (!dstFile.Open(strFilePath, CFile::modeCreate | CFile::modeWrite, &ex)) {
TCHAR szError[1024];
ex.GetErrorMessage(szError, 1024);
MessageBox(szError, _T("打开目标文件"));
return;
}
TCHAR buff[4096];
int lineCount = m_text.GetLineCount(); // 获取文本框中文本的 行数
for (int i = 0; i < lineCount; i++) {
memset(buff, 0, 4096);
int nRead = m_text.GetLine(i, buff, 4096);
if (nRead == 0) {
dstFile.WriteString(_T("\n"));
}
else {
wcscat_s(buff, _T("\n"));
dstFile.WriteString(buff);
}
}
dstFile.Close();
}