txt逐行读取并显示
一. 多行txt, 编辑框显示成一行
void CFaceTemptureDlg::OnButtonClick_SO2()
{
// TODO: 在此添加控件通知处理程序代码
CString strLine, strTemp, result;
int row = 0;
CString filename = L"111.txt";
CStdioFile file(L"111.txt", CFile::modeRead);
while (file.ReadString(strLine))
{
//char *str = strLine.GetBufferSetLength(strLine.GetLength());
char *str = (char *)strLine.GetBufferSetLength(strLine.GetLength());
char *p;
if (strLine != "")
{
result += strLine;
GetDlgItem(IDC_Edit_SO2)->SetWindowText(result);
row++;
}
}
file.Close();
若文件内容为:
2017/9/2 13:25 45
2017/9/3 14:65 59
读取结果为:
编辑框显示一行:2017/9/2 13:25 452017/9/3 14:65 59
缺陷: 读中文则出现乱码
能解决此问题的,请留言,非常感谢!
二.多行txt,编辑框显示多行(原样显示)
void CFaceTemptureDlg::OnButtonClick_SO2()
{
CString strLine, strTemp, result;
int row = 0;
CString filename = L"111.txt";
CStdioFile file(L"111.txt", CFile::modeRead);
while (file.ReadString(strLine))
{
//char *str = strLine.GetBufferSetLength(strLine.GetLength());
char *str = (char *)strLine.GetBufferSetLength(strLine.GetLength());
//char *p;
if (strLine != "")
{
result += _T("\r\n") + strLine;
//result += strLine;
GetDlgItem(IDC_Edit_SO2)->SetWindowText(result);
GetDlgItem(IDC_Edit_SO2)->UpdateWindow();
//result = " ";
row++;
}
}
file.Close();
}
若txt内容为:
2017/9/2 13:25 45
2017/9/3 14:65 59
2017/9/10 52:69 45 96
2016/9/5 56:3 33
2016/6/5 5:3 06
2019/9/6/10 12:20 11
2019/3/5 10:11 12
2013/45/52 22:2 55
2012/2/1 22:56 23
2012/2/12 12:89 55
2015/1/2 2:23 12
2015/1/2 3:10 70
2015/1/2 4:15 12
2015/1/2 5:16 13
2015/1/3 6:2 15
2017/9/3 14:65 59
2017/9/10 52:69 45 96
2016/9/5 56:3 33
2016/6/5 5:3 06
2019/9/6/10 12:20 11
2019/3/5 10:11 12
2013/45/52 22:2 55
2012/2/1 22:56 23
2012/2/12 12:89 55
2015/1/2 2:23 12
2015/1/2 3:10 70
2015/1/2 4:15 12
2015/1/2 5:16 13
2015/1/3 6:2 15
显示结果:
关键:
将
三. 编辑框在底部显示最新内容
result += strLine;
改成:
result += _T("\r\n") + strLine;
三. 编辑框在底部显示最新内容
前提:添加编辑框的控件变量,本例是,CEdit类: m_Edit_SO2 (由于已经添加过了,所以显示不成黑色)
法一:
void CFaceTemptureDlg::OnButtonClick_SO2()
{
// TODO: Add your command handler code here
/完美,滚动到底部
CString strLine, strTemp, result;
int row = 0;
CString filename = L"111.txt";
CStdioFile file(L"111.txt", CFile::modeRead);
while (file.ReadString(strLine))
{
char *str = (char *)strLine.GetBufferSetLength(strLine.GetLength());
if (strLine != "")
{
result += _T("\r\n") + strLine;
GetDlgItem(IDC_Edit_SO2)->SetWindowText(result);
GetDlgItem(IDC_Edit_SO2)->UpdateWindow();
m_Edit_SO2.LineScroll(m_Edit_SO2.GetLineCount(), 0);
row++;
}
}
file.Close();
/
}
总结:
1. 区别:
第二部分显示内容,看到最上面的内容,txt底部的内容在下面但是看不到;
而这次则,上面的内容看不到,底部的内容能看到。(可对比两张结果图)
2. 和之前代码比添加了:
m_Edit_SO2.LineScroll(m_Edit_SO2.GetLineCount(), 0);
法二:
void CFaceTemptureDlg::OnButtonClick_SO2()
{
// TODO: Add your command handler code here
/完美,滚动到底部
CString strLine, strTemp, result;
int row = 0;
CString filename = L"111.txt";
CStdioFile file(L"111.txt", CFile::modeRead);
while (file.ReadString(strLine))
{
char *str = (char *)strLine.GetBufferSetLength(strLine.GetLength());
if (strLine != "")
{
result += _T("\r\n") + strLine;
GetDlgItem(IDC_Edit_SO2)->SetWindowText(result);
GetDlgItem(IDC_Edit_SO2)->UpdateWindow();
//m_Edit_SO2.LineScroll(m_Edit_SO2.GetLineCount(), 0);
m_Edit_SO2.SendMessage(WM_VSCROLL, SB_BOTTOM, 0);
row++;
}
}
file.Close();
/
}
添加了:
m_Edit_SO2.SendMessage(WM_VSCROLL, SB_BOTTOM, 0);
总结:
m_Edit_SO2.LineScroll(m_Edit_SO2.GetLineCount(), 0);
m_Edit_SO2.SendMessage(WM_VSCROLL, SB_BOTTOM, 0);
这两行代码等价(可选择任意一个)四:添加滚动条
设置Edit Control控件的一些属性
①设置Edit Control 属性Multiline为true,表示该控件支持多行
②设置Want Return 属性设置为true,表示该控件支持换行输入
③设置Vertical Scrollbar 属性为true,表示该控件具有垂直滚动条
五.
VC(MFC) edit控件滚动条自动到达底部的几种实现