iTextRange::MoveWhile 方法 (tom.h)

从范围的指定端开始,在字符属于 Cset 指定的集且字符数小于或等于 Count 时进行搜索。 找到不匹配的字符时,范围将折叠到插入点。

语法

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

参数

Cset

类型: VARIANT*

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

Count

类型: long

要移过的最大字符数。 默认值为 tomForward,它将搜索到文章末尾。 如果 Count 小于零,则搜索从开始位置开始,然后向后-向故事开头。 如果 Count 大于零,则搜索从结束位置开始,然后向前推进 -- 到文章末尾。

pDelta

类型: long*

移动字符结束的实际计数。 此参数可以为 null。

返回值

类型: HRESULT

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

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

注解

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

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

ITextRange::MoveWhile 方法类似于 ITextRange::MoveUntil,但 MoveWhile 会搜索,只要找到 Cset 指定的集的成员,并且 pDelta 值没有额外的增量。

ITextRange::MoveStartWhileITextRange::MoveEndWhile 方法分别移动开头和结尾,仅超过 Cset 参数指定的字符集中找到的所有连续字符。

VARIANT 类型主要用于 IDispatch 方案,如 Microsoft Visual Basic for Applications (VBA) ,但也可以从 C 或 C++ 轻松使用它。 以下 C++ 代码演示如何初始化和使用 VARIANT 参数来匹配 r 范围内的数字范围。

VariantInit(&varg);
varg.vt = VT_I4;
varg.lVal = C1_DIGIT;
hr = r.MoveWhile(&varg, tomForward, pDelta); // Move IP past span of digits

或者,可以使用显式字符串,如以下示例所示。

VariantInit(&varg);
bstr = SysAllocString("0123456789");
varg.vt = VT_BSTR;
varg.bstr = bstr;
hr =r.MoveWhile(&varg, tomForward, pDelta);    // Move IP past span of digits

以下 VBA 示例代码匹配区域 r 中的下一个标准通用标记语言 (SGML) 条目的正文。 SGML 条目以 开头 <keyword ...> ,以 </ keyword>结尾。

r.Find <                  // Get to start of next tag
r.MoveWhile C1_SPACE      // Bypass any space characters
r.MoveEndWhile C1_ALPHA   // Match keyword
s$ = </ + r               // Create VBA string to search for
r.Find >                  // Bypass remainder of start tag
r.FindEnd s$              // Match up to end of closing keyword
r.FindEnd <, tomStart     // Back up to start of end tag
                          // r has body of SGML entry
                           

要求

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

请参阅

概念性

ITextRange

移动

MoveEndWhile

MoveStartWhile

MoveUntil

引用

文本对象模型