c++格式化文本到另一个CEDIT 控件中我详细描述一下我的问题。[文本框 A][文本框B] 如图的两个文本框,现在需
c++格式化文本到另一个CEDIT 控件中
我详细描述一下我的问题。
[ 文本框 A ] [ 文本框B ]
如图的两个文本框,现在需要把用户在A中选中的文本截取并输出到B中。
这里需要注意的是 截取文本的位置不能发生任何变化。
包括原所在行,所在列。这一步我已经实现了。
现在的问题来了, 我第一次截取的时候是正常的。
当我第二次截取的时候会把原来的数据清空,重新写入新的数据。
如何在保证旧数据不变的情况下加入新的数据。
有朋友可能会说 每次写入之前 先读出文本内容,然后 拼接再写入。
这样会导致旧数据紧接着新数据输出, 位置就发生了变化了。
想请教高手们讲解一下setWindowText()还有没有别的用法。 谢谢了
注:(旧数据的位置一定不能发生变化。)
[最优解释]
不用清空的,直接往后面插入新数据即可:
用
CEdit::ReplaceSel
[其他解释] 如何在保证旧数据不变的情况下加入新的数据。
这句话做何理解?你既然要文本的位置不能发生任何变化,倘若你把第二次截取的内容追加到第一次后面,位置能不变吗?也就是必须加在第一次文本的前面?
[其他解释]写掉了一句
string str;
str = "Hello !";
m_StrNotesEdit.ModifyStyleEx(0,WS_EX_CLIENTEDGE, SWP_DRAWFRAME); //显示文本框
CeditLength = m_StrNotesEdit.GetWindowTextLength();
m_StrNotesEdit.SetSel(CeditLength, CeditLength);
//l追加文本
m_StrNotesEdit.ReplaceSel((str+"\r\n").c_str());
[其他解释]比如你要在B对话框中显示CString m_strB;
而你现在获取到得字符串是strA;
要在前面添加只需要:
m_strB = strA + m_strB;
在后面添加:
m_strB+= strA;
在中间添加用到CString::Mid,CString::Left,CString::Right等等。
你只需要操作m_strB然后用UpdateData(FALSE)或者SetWindowsText显示出来就可以了!
[其他解释]ReplaceSel函数为正解
记得标注为CEdit的MultipleLine属性
[其他解释]可以考虑SendInput!!
[其他解释]可以详细说一下么,小弟新猿
[其他解释]如果只是追加文本,可以用这个方法:
string str;
m_StrNotesEdit.ModifyStyleEx(0,WS_EX_CLIENTEDGE, SWP_DRAWFRAME); //显示文本框
CeditLength = m_StrNotesEdit.GetWindowTextLength();
m_StrNotesEdit.SetSel(CeditLength, CeditLength);
//l追加文本
m_StrNotesEdit.ReplaceSel((str+"\r\n").c_str());
[其他解释]用的是CSring吗?
你拷贝的时候不是有个缓存吗?先在缓存里面处理后(在相应的节点追加新的字符串)再显示出来
[其他解释]比如旧数据在第3行, 我需要在第2行 或者 第四行 新加数据 。 那么 第3行 的位置 肯定不能发生变化。
在这里我第一次写入第三行数据的时候 前两行 我都是 通过写入换行还 跳过的
[其他解释]是用的CString , 缓存你是指的字符串的缓存么? 能不能细说一下 ,谢谢
[其他解释]
B 文本框中的 每一行的开始位置我都能拿到, 你看一下这样能否实现
int lineBegin = m_edit_format.LineIndex(line);
m_edit_format.setSel(lineBegin,lineBegin);
m_edot_format.ReplaceSel();
[其他解释]不要沉啊,求大神啊。
[其他解释]我怎么发分给大家 啊
[其他解释]11001010
00110010
---------
11111010
[其他解释]大神能细说一下么?
对什么取或?