编辑框如何实现输出的内容不覆盖?

tzrene 2009-06-07 02:24:20
就是在一个编辑框里输出的内容:
第一次是aaaaaaa 第二次想输出bbbbbbb 但是它会覆盖掉aaaaaaa
怎么做到第二次输出的是aaaaaaa
bbbbbbb

先谢谢了 我菜鸟
...全文
658 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
若风09 2012-08-02
  • 打赏
  • 举报
回复
LS太正确了,而且详细;LZ兄弟,我和你一样也是菜鸟,遇到同样的问题了,让我们向大师们敬礼吧!
长老QY 2009-06-07
  • 打赏
  • 举报
回复
在编辑框中追加文本有2种方法:
1调用SetWindowText函数
首先调用CWnd::GetWindowText函数获得当前文本,然后调用CWnd::SetWindowText函数设置追加后的文本。
2调用ReplaceSel函数
首先调用CEdit::SetSel函数选定当前文本的末端,然后调用CEdit::ReplaceSel追加文本。
SetSel函数的定义如下:
void SetSel( int nStartChar, int nEndChar, BOOL bNoScroll = FALSE );
ReplaceSel函数的定义如下:
void ReplaceSel( LPCTSTR lpszNewText, BOOL bCanUndo = FALSE );

void CDemoDlg::OnTest1()
{
CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT);

CString strText = _T("");
//获得当前文本
pEdit->GetWindowText(strText);
strText += _T("ABC1");
//设置追加后的文本
pEdit->SetWindowText(strText);
}

void CDemoDlg::OnTest2()
{
CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT);
int nLength = pEdit->GetWindowTextLength();

//选定当前文本的末端
pEdit->SetSel(nLength, nLength);
//l追加文本
pEdit->ReplaceSel(_T("ABC2"));
}
stjay 2009-06-07
  • 打赏
  • 举报
回复
例如 第二次的bbbbbbb 第三次的cccccc 吧
CString str=_T("bbbbbbb");//替换成需要的
CEdit *ce = (CEdit *)GetDlgItem(IDC_SHOW1);
ce->SetSel(-1);
ce->ReplaceSel(str);

str=_T("cccccc");
ce->SetSel(-1);
ce->ReplaceSel(str);

不用再进行字符串拼接了
tzrene 2009-06-07
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 xsgluozi 的回复:]
ls正解啊
[/Quote]还是不行啊
晒月光的青蛙 2009-06-07
  • 打赏
  • 举报
回复
ls正解啊
tzrene 2009-06-07
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 stjay 的回复:]
向编辑框末尾添加字符串
CString str;
CEdit *ce = (CEdit *)GetDlgItem(IDC_EDIT1);
ce->SetSel(-1);
ce->ReplaceSel(str);
[/Quote]用这个代替前面的SetDlgItemText(IDC_SHOW1,str)吗?还是这个就可以实现?
stjay 2009-06-07
  • 打赏
  • 举报
回复
向编辑框末尾添加字符串
CString str;
CEdit *ce = (CEdit *)GetDlgItem(IDC_EDIT1);
ce->SetSel(-1);
ce->ReplaceSel(str);
tzrene 2009-06-07
  • 打赏
  • 举报
回复
大家再帮帮忙吧 谢谢了
tzrene 2009-06-07
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 b43ok 的回复:]
方法海了去了,只是没有那么标准而已
比如不停给编辑框发送WM_CHAR ^_^

不开玩笑了给你个例子:
CString str="";
GetDlgItemText(IDC_EDIT1,str);
str+="bbbbb";
SetDlgItemText(IDC_EDIT1,str);
[/Quote]可能是我太笨了 还是不行 我的代码:
CString str="";
CString str1="";
CString str2="";
GetDlgItemText(IDC_NODE1,str1);
GetDlgItemText(IDC_NODE2,str2);
str=str1+str2;
m_show1=str;
SetDlgItemText(IDC_SHOW1,str);
IDC_NODE1是编辑框1,IDC_NODE2是编辑框2,IDC_SHOW1是编辑框3,m_show1是编辑框3的变量

b43ok 2009-06-07
  • 打赏
  • 举报
回复
方法海了去了,只是没有那么标准而已
比如不停给编辑框发送WM_CHAR ^_^

不开玩笑了给你个例子:
CString str="";
GetDlgItemText(IDC_EDIT1,str);
str+="bbbbb";
SetDlgItemText(IDC_EDIT1,str);
hackwolfoscar 2009-06-07
  • 打赏
  • 举报
回复
关联对象

然后把buffer相加.
tzrene 2009-06-07
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 summericeyl 的回复:]
其实2楼的就是这种方法。 我想不出还有什么办法
[/Quote]刚才试了2楼的方法 没有成功 我现在是这样的:在编辑框1输入 比如aaa 在编辑框2输入 比如bbb
点击确定在编辑框3里显示aaabbb
第二次 我在编辑框1里输入 ccc 在编辑框2里输入 ddd 点击确定显示aaabbb cccddd
第三次 依此类推。。。有什么好的办法吗
summericeyl 2009-06-07
  • 打赏
  • 举报
回复
其实2楼的就是这种方法。 我想不出还有什么办法
tzrene 2009-06-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 summericeyl 的回复:]
你建立一个缓冲区好了,把原先的内容复制到里面去, 再加上新的内容, 然后写进编辑框中
[/Quote]这会不会很麻烦啊?
tzrene 2009-06-07
  • 打赏
  • 举报
回复
GetDlgItemText的参数就是CString定义的变量名吗?
summericeyl 2009-06-07
  • 打赏
  • 举报
回复
你建立一个缓冲区好了,把原先的内容复制到里面去, 再加上新的内容, 然后写进编辑框中
b43ok 2009-06-07
  • 打赏
  • 举报
回复
先用GetDlgItemText取得"aaaaa"放到一个CString变量里
然后在这个CString后面加上"bbbbbb"
然后SetDlgItemText把这个CString设置到编辑框里

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧