Rich Edit Control中的当前选择

【勇芳软件工作室】汉化HomePreviousNext

用户可以使用鼠标或键盘选择丰富的编辑控件中的文本。【当前选择】是所选字符的范围,如果没有选择字符,则是插入点的位置。应用程序可以获取有关当前选择的信息,设置当前选择,确定当前选择何时更改,以及显示或隐藏选择突出显示。

要确定富编辑控件中的当前选择,请使用EM_EXGETSEL消息。要设置当前选择,请使用EM_EXSETSEL消息。CHARRANGE结构与两个消息一起使用,并指定一系列字符。要检索有关当前选择内容的信息,可以使用EM_SELECTIONTYPE消息。

应用程序可以通过处理EN_SELCHANGE通知消息来检测当前选择何时更改。通知消息指定包含有关新选择的信息的SELCHANGE结构。丰富的编辑控件只有通过使用EM_SETEVENTMASK消息启用它才会发送此通知消息。

默认情况下,丰富的编辑控件在获取和丢失焦点时显示并隐藏选择突出显示。您可以随时使用EM_HIDESELECTION讯息显示或隐藏选择高亮。例如,应用程序可能会提供一个“搜索”对话框来查找丰富的编辑控件中的文本。应用程序可能会选择匹配的文本而不关闭对话框,在这种情况下,它必须使用EM_HIDESELECTION消息突出显示选择。

与编辑控件一样,您可以指定ES_NOHIDESEL窗口样式,以防止丰富的编辑控件在失去焦点时隐藏选择突出显示。创建丰富的编辑控件后,还可以使用EM_HIDESELECTION消息来更改ES_NOHIDESEL窗口样式。

您可以使用EM_GETSELEM_SETSEL编辑控制消息来检索并设置当前选择,而不是使用EM_EXGETSELEM_EXSETSEL消息。EM_GETSEL消息将两个16位字符索引包装到其32位返回值中,因此仅适用于完全位于第一个64K内的选择。但是,丰富的编辑控件绝对不会包含超过32K的文本,除非您使用EM_EXLIMITTEXT消息来扩展此限制。对于超出文本第一个64K的选项,EM_GETSEL消息返回-1。