编辑框怎么自动清空啊? TextBox :m_Message是CString变量,显示串口数据,数据越来越大怎么能使它自动清除呢?? 另外怎么能使Textbox显示自动最后一行呢 而不是最上面一行?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 UpdateData(); if (m_Message.GetLength() > 8192) { m_Message= m_Message.Right(4096); int pos = m_Message.Find(_T('\n')) + 1; m_Message= m_Message.Right(4096 - pos); } m_Message= m_Message + _T("\r\n"); CEdit *pEdit = (CEdit *)GetDlgItem(IDC_EDIT_MESSAGE);//IDC_EDIT_MESSAGE:Textbox控件ID int nLine = pEdit->GetLineCount(); pEdit->LineScroll(nLine+1); UpdateData(FALSE); CEdit::ReplaceSel判断当m_Message的长度超过某个值时,去掉前面n(找换行符)句 给你贴出的代码就是超过一定的长度后清空前面的,并滚动到最后一行,在我的机器上是可以的.或许你的数据没有这么大,你设小一点应该就可以的.你可以调试或是用TRACE打印一下啊.if (m_Message.GetLength() > 1024) { m_Message= m_Message.Right(512); int pos = m_Message.Find(_T('\n')) + 1;//看看这里有没有找到.这里是找换行符 m_Message= m_Message.Right(512 - pos); }这个调试一下就知道了的啊. 大的小的我都试过了,没出现效果。是不是还有属性设置要改,或代码不添加到EN_CHANGE函数内。 选了Multiline, Vertical,Aoto Vscroll,Border,Visble,Tab stop. 使用CEdit类的LineScroll()函数;假如你定义了CEdit一个控件变量m_edit;使用m_edit.LineScroll(m_edit.GetLineCount(),0);就可以了! 问题描述不清啊,或是把你的代码贴出来。Textbox?VC里应该是叫Edit控件吧?不行啊,不能是CString---------------------------这又是什么意思的?难道m_Message不是CString类型吗?PS:表达也是一门艺术。 抱歉,再次表达,1、我想让EditBox显示最新的数据(QQ聊天记录模式),也就是能显示最后一行,但现在只能显示最初的几行,即使拉到最下面,它会立即跳回显示前几行。2、将最初进来的数据清除或部分清除,只保留部分最新数据。完毕。 我放到编辑框的EN CHANG函数里了没有错吧, 没什么奇怪的。1,你的串口数据中可能根本就没有换行符,你自己适当修改一下代码就可以啊。2,不应该在EN CHANG中调,也没有必要响应这个函数,因为你是接受串口数据,然后显示。你只需要自定义一个显示串口数据到EDIT控件的函数,当接受到数据,就调用这个函数控制显示。void CPrepareDlg::Prompt(const CString & strPrompt){ CEdit *pEdit = (CEdit *)GetDlgItem(IDC_EDIT1); pEdit->GetWindowText(m_Message); if (m_Message.GetLength() > 1024) { m_Message = m_Message.Right(512); int pos = m_Message.Find(_T('\n')) + 1; m_Message = m_Message.Right(512 - pos); } m_Message = m_Message + _T("\r\n") + strPrompt; SetDlgItemText(IDC_EDIT1, m_Message); int nLine = pEdit->GetLineCount(); pEdit->LineScroll(nLine+1);}CString str = 接受到的串口数据;Prompt(str); 关于Jump API的问题 什么意思怎做 各位使用什么工具方便的制作3D图标? 关于游戏编程,请传授传授经验 【问题:】 关于链表保存的问题!!!! 关于CSrollView类中闪动的问题 Cannot open precompiled header file: 'Debug/ClientSock.pch':这是什么意思? 运动目标跟踪——怎样在视频画面上显示跟踪目标的ID 请教有关多线程的知识 CDOC的变量值不能传递给Cview类? 自己写的CFile::Write();函数~~但是存取结构体和整型数据时出现错误~ 怎么取得excel里第i行,第j列的值啊?
if (m_Message.GetLength() > 8192)
{
m_Message= m_Message.Right(4096);
int pos = m_Message.Find(_T('\n')) + 1;
m_Message= m_Message.Right(4096 - pos);
}
m_Message= m_Message + _T("\r\n"); CEdit *pEdit = (CEdit *)GetDlgItem(IDC_EDIT_MESSAGE);//IDC_EDIT_MESSAGE:Textbox控件ID
int nLine = pEdit->GetLineCount();
pEdit->LineScroll(nLine+1); UpdateData(FALSE);
if (m_Message.GetLength() > 1024)
{
m_Message= m_Message.Right(512);
int pos = m_Message.Find(_T('\n')) + 1;//看看这里有没有找到.这里是找换行符
m_Message= m_Message.Right(512 - pos);
}
这个调试一下就知道了的啊.
是不是还有属性设置要改,或代码不添加到EN_CHANGE函数内。
假如你定义了CEdit一个控件变量m_edit;
使用m_edit.LineScroll(m_edit.GetLineCount(),0);
就可以了!
---------------------------
这又是什么意思的?难道m_Message不是CString类型吗?
PS:表达也是一门艺术。
1、我想让EditBox显示最新的数据(QQ聊天记录模式),也就是能显示最后一行,但现在只能显示最初的几行,即使拉到最下面,它会立即跳回显示前几行。
2、将最初进来的数据清除或部分清除,只保留部分最新数据。
完毕。
1,你的串口数据中可能根本就没有换行符,你自己适当修改一下代码就可以啊。
2,不应该在EN CHANG中调,也没有必要响应这个函数,因为你是接受串口数据,然后显示。你只需要自定义一个显示串口数据到EDIT控件的函数,当接受到数据,就调用这个函数控制显示。
void CPrepareDlg::Prompt(const CString & strPrompt)
{
CEdit *pEdit = (CEdit *)GetDlgItem(IDC_EDIT1);
pEdit->GetWindowText(m_Message);
if (m_Message.GetLength() > 1024)
{
m_Message = m_Message.Right(512);
int pos = m_Message.Find(_T('\n')) + 1;
m_Message = m_Message.Right(512 - pos);
}
m_Message = m_Message + _T("\r\n") + strPrompt;
SetDlgItemText(IDC_EDIT1, m_Message);
int nLine = pEdit->GetLineCount();
pEdit->LineScroll(nLine+1);
}CString str = 接受到的串口数据;
Prompt(str);