如何使用 RTF 文本操作
应用程序可以发送信息,以检索或查找 Rich Edit 控件中的文本。 可以检索所选文本或指定范围的文本。
要获取 Rich Edit 控件中的选定文本,请使用 EM_GETSELTEXT 消息。 文本将复制到指定的字符数组。 必须确保数组足够大,足以容纳所选文本以及终止 null 字符。
要检索指定范围的文本,请使用 EM_GETTEXTRANGE 消息。 与该信息一起使用的 TEXTRANGE 结构指定了要检索的文本范围,并指向一个接收文本的字符数组。 同样,应用程序必须确保数组的大小足以容纳指定的文本和一个终止 null 字符。
可以使用 EM_FINDTEXT 或 EM_FINDTEXTEX 消息,或其 Unicode 等效消息 EM_FINDTEXTW 和 EM_FINDTEXTEXW 在 Rich Edit 控件中搜索字符串。 与非扩展版本一起使用的 FINDTEXT 结构指定了要搜索的文本范围和要搜索的字符串。 扩展版本使用 FINDTEXTEX 结构,该结构指定了相同的信息,还会接收找到的文本字符范围的起点和终点。 还可以指定此类选项,例如搜索是否区分大小写。
需要了解的事项
技术
先决条件
- C/C++
- Windows 用户界面编程
说明
使用 Rich Edit 文本操作
以下示例函数在支持 Unicode 的 Rich Edit 控件中的选定文本内查找指定的文本。 如果找到目标,它就会成为新的选择。
BOOL FindTextInSelection(HWND hRich, WCHAR* target)
{
CHARRANGE selectionRange;
SendMessage(hRich, EM_EXGETSEL, 0, (LPARAM)&selectionRange);
FINDTEXTEX ftex;
ftex.lpstrText = target;
ftex.chrg.cpMin = selectionRange.cpMin;
ftex.chrg.cpMax = selectionRange.cpMax;
LRESULT lr = SendMessage(hRich, EM_FINDTEXTEXW, (WPARAM)FR_DOWN, (LPARAM) &ftex);
if (lr >= 0)
{
LRESULT lr1 = SendMessage(hRich, EM_EXSETSEL, 0, (LPARAM)&ftex.chrgText);
SendMessage(hRich, EM_HIDESELECTION, (LPARAM)FALSE, 0);
return TRUE;
}
return FALSE;
}
注解
Microsoft Rich Edit 3.0 还支持 HexToUnicode 输入法编辑器 (IME) 功能,让用户能够使用热键在十六进制和 Unicode 之间进行转换。 有关详细信息,请参阅 HexToUnicode IME。
相关主题