如何与当前所选内容交互
用户可以使用鼠标或键盘在 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_EXGETSEL 和 EM_EXSETSEL 消息外,还可以使用 EM_GETSEL 和 EM_SETSEL 编辑控制信息来检索和设置当前选择。 EM_GETSEL 消息在其 32 位返回值中包含两个 16 位字符索引,因此只适用于完全位于前 64K 的选择内容。 但是,Rich Edit 控件包含的文本字符数永远不会超过 32K,除非使用了 EM_LIMITTEXT 或 EM_EXLIMITTEXT 消息来扩展这一限制。 对于超出前 64 KB 文本的选择,EM_GETSEL 消息将返回 -1。 在这种情况下,仍然可以使用 wParam 和 lParam 中返回的值来查找选择的开始和结束字符。
相关主题