如何与当前所选内容交互

用户可以使用鼠标或键盘在 Rich Edit 控件中选择文本。 当前所选区域是选定字符的范围,如果未选择任何字符,则是插入点的位置。 应用程序可以获取有关当前所选区域的信息、设置所选区域、确定所选区域何时发生变化,以及显示或隐藏所选区域高亮。

需要了解的事项

技术

先决条件

  • C/C++
  • Windows 用户界面编程

说明

与当前所选内容交互

要确定 Rich Edit 控件中的当前选择,请使用 EM_EXGETSEL 消息。 要设置当前选择,请使用 EM_EXSETSEL 消息。 CHARRANGE 结构与这两种消息一起使用,用于指定字符范围。 要检索有关当前选择内容的信息,可以使用 EM_SELECTIONTYPE 消息。

应用程序可以通过处理 EN_SELCHANGE 通知代码来检测当前选择是否发生变化。 通知代码会指定一个 SELCHANGE 结构,其中包含有关新选择的信息。 只有在使用 EM_SETEVENTMASK 消息启用此功能后,Rich Edit 控件才会发送此通知代码。

默认情况下,Rich Edit 控件在获取和失去焦点时会显示和隐藏突出显示的所选内容。 可以使用 EM_HIDESELECTION 消息来随时显示或隐藏选择突出显示。 例如,应用程序可能提供“搜索”对话框来查找 Rich Edit 控件中的文本。 应用程序可能会选择匹配的文本而不关闭对话框,在这种情况下,应用程序必须使用 EM_HIDESELECTION 消息来突出显示选中的文本。

与编辑控件一样,可以指定 ES_NOHIDESEL 窗口样式,以防止 Rich Edit 控件在失去焦点时隐藏突出显示的选择内容。

除了使用 EM_EXGETSELEM_EXSETSEL 消息外,还可以使用 EM_GETSELEM_SETSEL 编辑控制信息来检索和设置当前选择。 EM_GETSEL 消息在其 32 位返回值中包含两个 16 位字符索引,因此只适用于完全位于前 64K 的选择内容。 但是,Rich Edit 控件包含的文本字符数永远不会超过 32K,除非使用了 EM_LIMITTEXTEM_EXLIMITTEXT 消息来扩展这一限制。 对于超出前 64 KB 文本的选择,EM_GETSEL 消息将返回 -1。 在这种情况下,仍然可以使用 wParamlParam 中返回的值来查找选择的开始和结束字符。

使用 Rich Edit 控件

Windows 通用控件演示 (CppWindowsCommonControls)