用MFC的Edit控件显示日志

本文由 @lonelyrains 出品,转载请注明出处。 
文章链接: http://blog.csdn.net/lonelyrains/article/details/8696962


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

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

3、添加日志:添加CString成员 CString m_Log

在事件响应函数中,添加日志的代码,并将添加到日志末尾最新的内容在控件的底部更新显示:

	UpdateData(TRUE);
	m_log += "操作演示开始";
	m_log += "\r\n";
	m_logctrl.SetWindowText(m_log);
	//m_logctrl.SetScrollPos(SB_VERT,m_logctrl.GetLineCount(),TRUE);
	m_logctrl.LineScroll(m_logctrl.GetLineCount());
	UpdateData(FALSE);

4、注意事项:

①CString类型的m_log不能直接用class wizard 或者直接改ddx代码关联到日志的CEdit控件,不然会出现滚动条设置到底部后又一闪到顶部

②不能用注释行的m_logctrl.SetScrollPos(SB_VERT,m_logctrl.GetLineCount(),TRUE);设置滚动条的位置。此方法会导致滚动条虽然到最低端了,但是控件的内容并没有到最低端,仍停留在原位置

③使用"\r\n"回车换行,而不能直接用"\n"

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



你可能感兴趣的:(用MFC的Edit控件显示日志)