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 中的错误处理。
返回代码 | 说明 |
---|---|
|
Cset 无效。 |
|
由于其他原因而失败。 |
注解
ITextRange::MoveUntil 描述的运动是合乎逻辑的,而不是几何的。 也就是说,动作是接近故事的结尾或开始。 根据语言,移动到故事末尾可能是向左移动或向右移动。
有关详细信息,请参阅 ITextRange 中的讨论和 ITextRange::Move 的“备注”部分。
ITextRange::MoveWhile 方法类似于 ITextRange::MoveUntil,但 MoveWhile 会搜索,只要找到 Cset 指定的集的成员,并且 pDelta 值没有额外的增量。
ITextRange::MoveStartWhile 和 ITextRange::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 |
请参阅
概念性
引用