AixLeft丶 2021-04-18 15:50 采纳率: 100%
浏览 57
已结题

VS MFC 调用定时器,一行一行读取txt文件,并每秒显示一行在编辑框中

void CGZHHjmDlg::OnBnClickedDaoruButton()
{
	// TODO: 在此添加控件通知处理程序代码
	int row = 0;
	char szFilter[] = "Text files(*.txt)|*.txt||";
	CFileDialog dlg(TRUE, "txt", NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter);

	if (dlg.DoModal() == IDOK) {
		CStdioFile file(dlg.GetPathName(), CFile::modeRead);

		while (file.ReadString(CPublic::strLine))
		{			
			CPublic::button_down = 0;
			if ((m_dropdown.GetCurSel() == 0) && CPublic::button_down == 0)
			{
				char* str = (char*)CPublic::strLine.GetBufferSetLength(CPublic::strLine.GetLength());
				if (CPublic::strLine != "")
				{
					CPublic::result += CPublic::strLine+_T("\r\n");
					SetTimer(TIMER_IMPORT, 1000, NULL);//1s
					m_fifo.LineScroll(m_fifo.GetLineCount(), 0);//滚动到底部开始显示
					row++;
				}
			}
		}
		file.Close();
	}

}

void CGZHHjmDlg::OnTimer(UINT_PTR nIDEvent)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	switch (nIDEvent)
	{
		case TIMER_SHOW:
		{
			CString str;
			CTime Itime = CTime::GetCurrentTime();
			str = Itime.Format("%Y-%m-%d %H:%M:%S");
			CWnd* p;
			p = GetDlgItem(IDC_TIME_EDIT);
			p->SetWindowText(str);	
            break;
		}
		
		case TIMER_IMPORT:
		{
			GetDlgItem(IDC_FIFO_EDIT)->SetWindowText(CPublic::result);
			GetDlgItem(IDC_FIFO_EDIT)->UpdateWindow();
			break;
		}
		default:
			break;
	}
}

以上代码最后效果就是在编辑框中全部显示数据,达不到想要的每秒显示一行数据到编辑框(类似于是每秒更新的效果,Sleep能达到效果,但是必须全部读取完文件之后才能进行其他操作,所以放弃了这种用法),我打过断点看过,读取txt文件结束之后才进入OnTimer。

另外我还尝试过在  while里面只单独设SetTimer,在Ontimer里面去一行行读取,但是这种情况下编辑框根本就不显示任何数据。

请教下大佬们,,该怎么解决一下呀。

  • 写回答

3条回答 默认 最新

  • 关注

    最好启动一个线程,或者用定时器读不能用while循环,通过变量控制。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 11月25日
  • 已采纳回答 11月17日

悬赏问题

  • ¥15 基于RTKLIB框架写的精密单点定位-AR
  • ¥15 PFENet的预训练权重
  • ¥15 程序哪有错误怎么改?
  • ¥15 交换机和交换机之间的链路带宽以及主机带宽的理解
  • ¥15 ai创想家对战模式代码
  • ¥15 集合A由3个2行4列二维数组构成,从集合A中任意取一个二维数组元素、如果该二维数组元素的对应列位置的上、下两数都是奇数,而且仅有2个列是奇数/奇数,则该数组有意义,并放入集合B中打印输出。
  • ¥15 电信IPV6 无法外网访问吗
  • ¥15 有偿求效果比较好的遥感影像匹配的c++代码
  • ¥15 博主,你好,我下载了你的智能网联汽车辅助驾驶安全信息检测系统,现在不会运行,可以教我吗,
  • ¥15 怎么在excle输入下列公式