我想做一个“在RichTextBox中进行复杂查找字符串的功能”。
我试了两个方法:1、RichTextBox.find(findtext,start,end)
2、inStr(start,RichTextBox.Text,findtext)
都能实现,可是,当RichTextBox读取的是大型文本文件时,在“查找”的时候,速度总是很慢,就算要查找的字符串就在前几行,也是一样的,要等好久,请问,要如何做,才能像"记事本”或“写字板”一样,可以快速查找定位呢?PS:我也想过用一个数组来读取存放RichTextBox中每一行的文本,再进行查找,可是我用了SendMessage的Getline功能,可是总是不能读取,好像SendMessage的这个功能只能针对TextBox啊?!
我试了两个方法:1、RichTextBox.find(findtext,start,end)
2、inStr(start,RichTextBox.Text,findtext)
都能实现,可是,当RichTextBox读取的是大型文本文件时,在“查找”的时候,速度总是很慢,就算要查找的字符串就在前几行,也是一样的,要等好久,请问,要如何做,才能像"记事本”或“写字板”一样,可以快速查找定位呢?PS:我也想过用一个数组来读取存放RichTextBox中每一行的文本,再进行查找,可是我用了SendMessage的Getline功能,可是总是不能读取,好像SendMessage的这个功能只能针对TextBox啊?!
EM_FINDTEXTEX
Finds text within a rich edit control.EM_FINDTEXTEX
wParam = (WPARAM) (UINT) fuFlags;
lParam = (LPARAM) (FINDTEXTEX FAR *) lpFindText;
其中引用类型FINDTEXTEX
FINDTEXTEX
Contains information about text to search for in a rich edit control. This structure is used with the EM_FINDTEXTEX message.typedef struct _findtextex {
CHARRANGE chrg; // range to search
LPSTR lpstrText; // null-terminated string to find
CHARRANGE chrgText; // range in which text is found
} FINDTEXTEX;
Const EM_FINDTEXTEX = (WM_USER + 79)
Const EM_FINDTEXTEX = &H44F
我用
RichTextBox1.SelStart = RichTextBox1.SelStart + 1
RichTextBox1.Find(TextFind.Text, , len(RichTextBox1.Text), rtfHighlight)
组合进行查询的时候,遇到这样一个问题,就是当RichTextBox读取的是大型文本时(如2M的txt文档),经常只能查询到文本的前半部分为止(在文本的后半部分,也有要查询的内容,可是它就是不继续查下去了),这是为什么啊?!要怎么解决呢?