我在OnTimer里写的以下代码,每隔几十ms就在edit里添加一行数据. 但是只有前22行可以正常滚动到最下面,到了23行,edit开始闪,就不管用了,请大家帮我看看下面代码哪里有问题.
m_strEditShow是编辑框的关联变量.
strTimer是每次要添加的数据.
……
m_strEditShow+=strTimer+"写入成功\r\n";
UpdateData(false);
CEdit* pEdit = (CEdit*)this->GetDlgItem(IDC_EDITShow);
if (pEdit != NULL)
{
pEdit->LineScroll(pEdit->GetLineCount());
}
……
m_strEditShow是编辑框的关联变量.
strTimer是每次要添加的数据.
……
m_strEditShow+=strTimer+"写入成功\r\n";
UpdateData(false);
CEdit* pEdit = (CEdit*)this->GetDlgItem(IDC_EDITShow);
if (pEdit != NULL)
{
pEdit->LineScroll(pEdit->GetLineCount());
}
……
你应该定时更新CEdit 前面的代码只增加内容 你定100毫秒滚动一次
Edit控件不适合显示太多的内容,默认限制好象是64K,程序可以自己设置。
CString也不宜过长,其追加内容的效率很低,可以改成用定长的字符数组,初始化时用new分配。
参考http://topic.csdn.net/t/20041107/18/3529877.html
{
assert(m_hComm != 0);
memset(m_szWriteBuffer, 0, sizeof(m_szWriteBuffer));
memcpy(m_szWriteBuffer, string, n);
m_nWriteSize=n;
SetEvent(m_hWriteEvent);
}
GetDlgItemText(IDC_EDIT1,str);
long len=str.GetLength();
((CEdit*)GetDlgItem(IDC_EDIT1))->SetSel(len,len,true);
((CEdit*)GetDlgItem(IDC_EDIT1))->ReplaceSel("12121212");