- 1、本文档共21页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
19第三十四课RichEdit控件更多的正文操作
第三十四课: RichEdit 控件:更多的正文操作
你将会了解到关于的RichEdit更多的正文操作。特别是你将会学习到如何搜索/替换正文,定位到某一指定的行号。
例子.
Theory
Searching for Text
RichEdit 控件具有几种正文操作,搜索指定正文就是其中的一种。搜索正文是通过发送 EM_FINDTEXT 或者 EM_FINDTEXTEX 消息来完成的。这两个消息有一点很小的不同点。
EM_FINDTEXT
wParam == 搜索选项。 可以是下表中的任意组合值。这些选项对 EM_FINDTEXT 和 EM_FINDTEXTEX 都是一样的。
FR_DOWN 如果指定了这个标志值,搜索操作从当前选定的 end 位置开始,直到控件中正文的 end 位置结束(向下搜索)。这个标志仅影响 RichEdit 2.0 和以后版本: 这个是 RichEdit 1.0 的缺省行为。RichEdit 2.0 或以后版本的缺省行为是在当前选定正文内的从结尾搜索到开始位置(向前搜索)。概括来说就是,如果你使用 RichEdit 1.0, 无论你做什么都没法影响搜索的方向:它总使用向后搜索。但是如果你使用 RichEdit 2.0 而且你想使用向后搜索的话,你必须指定这个标志值,否则使用的是向前搜索了。 FR_MATCHCASE 如果指定了这个标志值,搜索操作是大小写敏感的,即区分大小写。 FR_WHOLEWORD 如果设置了这个标志值,搜索操作就搜寻匹配指定搜索串的整个词。 实际上,还有更多的标志值,但是它们都是跟非英语系正文操作相关的。
lParam == FINDTEXT 结构的指针。
FINDTEXT STRUCT
chrg CHARRANGE
lpstrText DWORD ?
FINDTEXT ENDS
chrg 是一个 CHARRANGE 结构,其定义如下:
CHARRANGE STRUCT
cpMin DWORD ?
cpMax DWORD ?
CHARRANGE ENDS
cpMin 包含字符数组中第一个字符的字符索引。
cpMax 包含紧跟在字符数组中最后一个字符的字符的字符索引。
基本上,要搜索一个正文串,你必须指定要搜索的字符范围。
cpMin 和 cpMax 的具体意义根据搜索是向后还是向前是不同的。
如果是向后搜索,cpMin 指定搜索的开始字符索引,而 cpMax 则是结束字符索引。
如果是向前搜索,则反过来才对,也就是说 cpMin 包含结束字符索引而cpMax 包含开始字符索引。
lpstrText 是要搜索的正文串的指针。
EM_FINDTEXT 返回控件中跟搜索串匹配的的正文串的一个字符的索引。如果没找到匹配的则返回 -1。
EM_FINDTEXTEX
wParam == 搜索选项,跟 EM_FINDTEXT 的一样。
lParam == FINDTEXTEX 结构的指针。
FINDTEXTEX STRUCT
chrg CHARRANGE
lpstrText DWORD ?
chrgText CHARRANGE
FINDTEXTEX ENDS
FINDTEXTEX 中开始的两个成员是跟 FINDTEXT 结构中的一样的。
chrgText 是一个 CHARRANGE 结构,如果搜索到匹配串的话,其开始/结束字符索引会被填入这个结构中。
EM_FINDTEXTEX 的返回值跟 EM_FINDTEXT的是一样的。
EM_FINDTEXT 跟 EM_FINDTEXTEX 的不同处是 FINDTEXTEX 结构有一个另外的chrgText成员, 如果搜索到匹配串的话,
其开始/结束字符索引会被填入这个成员中。如果我们想对这个正文串进行更多的正文操作的话,有这个就方便多了。
替换/插入正文
RichEdit 控件提供了 EM_SETTEXTEX 来进行正文替换/插入操作。这个消息混合了 WM_SETTEXT 和 EM_REPLACESEL 的功能. 它具有以下语法:
EM_SETTEXTEX
wParam == SETTEXTEX 结构的指针。
SETTEXTEX STRUCT
flags DWORD ?
codepage DWORD ?
SETTEXTEX ENDS
flags 可以是以下值的组合:
ST_DEFAULT 删除Undo堆栈,丢弃RTF格式,替换所有的正文。 ST
文档评论(0)