MFC之Edit控件循环显示日志

琢磨这个问题比较久了。之前一直搜索“Edit控件循环显示”结果找不到答案,今天搜索Edit显示日志,找到了一个好方法,做了一些修改说明。

1、添加控件,设置控件属性:勾选Multiline、Want return 、Read-only

2、class wizard 添加控件成员变量 CEdit m_edit1

3、添加存储日志信息的容器:在添加CString成员 CString str

4、添加日志函数声明;

void tip( CString s);

4、添加tip日志函数(m_edit1为edit控件变量名),添加下面的代码。

void C*******Dlg::tip( CString s)
{
	UpdateData(TRUE);    //用于从控件中同步内容到程序
    //当然此行还可以进行添加时间头的处理,这里不做赘述。
	str += s; //原有日志加上新日志(提示)信息
	str += _T("\r\n"); //添加换行符
	m_edit1.SetWindowText(str); 
	m_edit1.LineScroll(m_edit1.GetLineCount());
	UpdateData(FALSE);  //用于从程序中同步内容到控件
    //日志容器过大时清空一次。此时可选择先写入进txt或log日志文件后在清空。
	int size = sizeof(str); 
	if (size > 1024)
		str.Empty();
}

5、函数调用:

tip(“这一条为测试日志”);

6、注意事项:

①在用str和m_edit1关联一个edit控件时,在UpdateData(TRUE)之前,不论str做了何种修改,str都将会重新置为控件内真正包含的内容。UpdateData(TRUE)用于从控件中同步内容到程序;UpdateData(FALSE)用于从程序中同步内容到控件。

②如果用上面讲的方法用到程序中,需要注意,如果日志记录数据记录频率大,时间长。代码中“str”会不断变大,最后变得不可控。比较好的处理方法是,限制str的大小(即控件显示日志的总条数),每次超过设置的阈值时,就将str写入txt日志文档中(比较好的做法是,txt文件按照时间节点进行命名,这样子能够保证一段时间区域中的日志信息不会过大,查找调试问题时也会很方便),而后将str清空。这样子就毫无瑕疵了。

原文:http://blog.csdn.net/lonelyrains/article/details/8696962

 

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值