ITextRange::MoveUntil 方法 (tom.h)

最多搜索 Cset 指定的字符集中的第一个字符的“计数”字符数。 如果找到字符,范围将折叠到该点。 搜索的开始和方向也由 Count 指定。

语法

HRESULT MoveUntil(
  VARIANT *Cset,
  long    Count,
  long    *pDelta
);

参数

Cset

类型: VARIANT*

匹配中使用的字符集。 这可以是显式字符串或字符集索引。 有关详细信息,请参阅 字符匹配集

Count

类型: long

要过去的最大字符数。 默认值为 tomForward,它搜索到文章末尾。 如果 Count 小于零,则从开始位置向后搜索。 如果 Count 大于零,则搜索从末尾开始向前搜索。

pDelta

类型: long*

插入点移动的字符数;如果 Count 大于零,则为匹配项加上 1;如果 Count 小于零,则为匹配项加上 –1。 指针可以为 null。

返回值

类型: HRESULT

方法返回 HRESULT 值。 如果方法成功,则返回 S_OK。 如果方法失败,它将返回以下错误代码之一。 有关 COM 错误代码的详细信息,请参阅 COM 中的错误处理

返回代码 说明
E_INVALIDARG
Cset 无效。
S_FALSE
由于其他某种原因而失败。

注解

如果未匹配任何字符,则范围保持不变。

ITextRange::MoveUntil 描述的运动是逻辑的,而不是几何的。 也就是说,动作是接近故事的结尾或开始。 根据语言,移动到故事末尾可能是向左移动或向右移动。

有关详细信息,请参阅 ITextRange 中的讨论和 ITextRange::Move 的“备注”部分。

ITextRange::MoveStartUntilITextRange::MoveEndUntil 方法分别移动开始和结束,直到找到 Cset 参数指定的集中的第一个字符。

ITextRange::MoveUntil 方法类似于 ITextRange::MoveWhile,但有两个差异。 首先, MoveUntil 移动插入点, 直到 找到属于 Cset 指定的字符集的第一个字符。 其次,在 MoveUntil 中,匹配的字符计数为 pDelta 中返回的值中的附加字符。 这样,便可以知道范围一端或另一端的字符属于 Cset ,即使插入点停留在范围末尾之一。

例如,假设范围 r 是一个插入点。 若要查看 r.GetChar () ) 给定的 r (字符是否在 Cset 中,请调用

r.MoveUntil(Cset, 1)

如果字符在 Cset 中,则返回值为 1,并且插入点不会移动。 同样,若要查看 r 前面的字符是否在 Cset 中,请调用

r.MoveUntil(Cset, -1)

如果该字符在 Cset 中,则返回值为 –1。

以下 Microsoft Visual Basic for Applications (VBA) 子例程打印由范围 r 标识的故事中的所有数字。

Sub PrintNumbers (r As ITextRange)
   r.SetRange 0, 0    // r = insertion point at start of story
   While r.MoveUntil(C1_DIGIT)  // Move r to 1st digit in next number
      r.MoveEndWhile C1_DIGIT  // Select number (span of digits)
      Print r    // Print it
   Wend
End Sub

要求

要求
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 tom.h
DLL Msftedit.dll

请参阅

概念性

GetChar

ITextRange

移动

MoveEndUntil

MoveStartUntil

MoveWhile

引用

文本对象模型