首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

c++格式化文本到另一个CEDIT 控件中,该怎么处理

2012-12-16 
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!!
[其他解释]
引用:
可以考虑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吗?
你拷贝的时候不是有个缓存吗?先在缓存里面处理后(在相应的节点追加新的字符串)再显示出来
[其他解释]
引用:
写掉了一句
string str;
str = "Hello !";
m_StrNotesEdit.ModifyStyleEx(0,WS_EX_CLIENTEDGE,   SWP_DRAWFRAME); //显示文本框
CeditLength = m_StrNotesEdit.GetWindowTextLength();
m_StrNotesEdit.SetSel(CeditLength……


比如旧数据在第3行, 我需要在第2行 或者 第四行 新加数据 。  那么 第3行 的位置 肯定不能发生变化。
在这里我第一次写入第三行数据的时候  前两行 我都是  通过写入换行还 跳过的

[其他解释]
引用:
用的是CSring吗?
你拷贝的时候不是有个缓存吗?先在缓存里面处理后(在相应的节点追加新的字符串)再显示出来

是用的CString ,   缓存你是指的字符串的缓存么? 能不能细说一下  ,谢谢


[其他解释]

引用:
不用清空的,直接往后面插入新数据即可:



C/C++ code?



1

CEdit::ReplaceSel


B 文本框中的 每一行的开始位置我都能拿到, 你看一下这样能否实现 

int lineBegin = m_edit_format.LineIndex(line);

m_edit_format.setSel(lineBegin,lineBegin);

m_edot_format.ReplaceSel();













[其他解释]
不要沉啊,求大神啊。
[其他解释]
我怎么发分给大家 啊

[其他解释]
11001010
00110010
---------
11111010
[其他解释]
引用:
11001010
00110010
---------
11111010


大神能细说一下么?  

对什么取或?

热点排行