将富编辑控件中的整个文本作为 CString 获取的各种方法

Posted

技术标签:

【中文标题】将富编辑控件中的整个文本作为 CString 获取的各种方法【英文标题】:Various methods to get entire text in a rich edit control as a CString 【发布时间】:2013-12-22 00:16:44 【问题描述】:

我想将富编辑控件中的整个文本作为 CString 获取,并且来自我的研究 似乎有六种方法可以实现这一目标:

    GetTextRange 并使用 GetTextLength 获取范围 EM_GETTEXTEX GetWindowText GetDlgItemText WM_GETETXT EM_STREAMOUT

我的问题如下:

    使用GetTextRangeGetWindowTextGetDlgItemText等方法与使用EM_GETTEXTEXWM_GETETXT和EM_STREAMOUT等消息有什么区别。 什么时候使用一种类型,什么时候使用另一种类型? EM_GETTEXTEXWM_GETETXTEM_STREAMOUT 在完成将整个文本作为CString 获取丰富编辑控件的任务方面有什么区别? 最后能否有人提供一个如何使用EM_GETTEXTEX 的示例,或者为我指出一个在线的方向?

【问题讨论】:

GetTextRangeGetWindowTextGetDlgItemText 或多或少是对窗口消息的封装,例如 WM_GETTEXT,使用起来更方便。这也是您通常更喜欢使用这些版本的原因。参数比SendMessageLPARAMWPARAM 参数类型更安全,并且不需要强制转换。查看这些函数的 MSDN 文档,您会看到文档提到正在发送相应的窗口消息。 使用 WM_GETTEXT 您可以从属于另一个进程的控件中检索文本。 GetWindowText 不检索这个。 GetDlgItemText 与 GetWindowText 概念相同,但允许使用控件 ID 而不是控件 hwnd。 只是想添加这个。使用 WM_GETTEXT 和包装器,您可以按原样获得未格式化的文本。仅从控件中获取文本非常有用。使用 EM_STREAMOUT 检索文档的 rtf 内容 【参考方案1】:

除 EM_STREAMOUT 外,所有内容都相同。

没有。 1 到 5 只是得到纯文本。 6 号获得完整的 RTF 流。 所以第 1 到 5 号只是与发送 WM_GETTEXT 几乎相同的方法。

【讨论】:

GetWindowText 与发送WM_GETTEXT 消息有很大不同:The secret life of GetWindowText。 同意。但是当我们正在讨论这个函数时,并且特定于编辑/rtf 控件,我认为这里的用法没有区别。 这个问题询问了差异以及为什么有 6 种不同的方式来做同样的事情。一个无条件地说它们都是一样的答案是错误的。即使这些差异在隐含的用例中并不重要,仍然需要注意。当然你不会说乘法和除法执行相同的操作(只要它们与 1 一起使用)。

以上是关于将富编辑控件中的整个文本作为 CString 获取的各种方法的主要内容,如果未能解决你的问题,请参考以下文章

PHP将富文本编辑后的内容,去除样式图片等只保留txt文本内容

php 将富文本编辑后的内容转义为不带HTML标签的字符

从 MFC 中的编辑控件写入文本 [重复]

如何将自旋控件关联到 MFC 中的不同编辑框

如何读取文本文件并将其显示在 win 32 unicode 字符集中的编辑控件上?

当我将富文本格式的字符串从 Python 写入文件时,我可以重新格式化它们吗?