Поделиться через


Метод ITextRange::MoveUntil (tom.h)

Выполняет поиск первого символа в наборе символов, заданном Cset, до числа символов. При обнаружении символа диапазон свернут до этой точки. Начало поиска и направление также указываются параметром Count.

Синтаксис

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

Параметры

Cset

Тип: VARIANT*

Кодировка, используемая в совпадении. Это может быть явная строка символов или индекс набора символов. Дополнительные сведения см. в разделе Наборы совпадений символов.

Count

Тип: long

Максимальное число символов для перемещения. Значение по умолчанию — tomForward, которое выполняет поиск до конца истории. Если значение Count меньше нуля, поиск выполняется в обратном направлении, начиная с начальной позиции. Если значение Count больше нуля, поиск выполняется вперед, начиная с конца.

pDelta

Тип: long*

Число символов, в которых перемещается точка вставки, плюс 1 для совпадения, если число больше нуля, и –1 для совпадения, если число меньше нуля. Указатель может иметь значение NULL.

Возвращаемое значение

Тип: HRESULT

Метод возвращает значение HRESULT . Если метод завершается успешно, он возвращает S_OK. Если метод завершается ошибкой, он возвращает один из следующих кодов ошибок. Дополнительные сведения о кодах ошибок COM см. в разделе Обработка ошибок в COM.

Код возврата Описание
E_INVALIDARG
Недопустимый набор Cset .
S_FALSE
Сбой по какой-либо другой причине.

Комментарии

Если символ не совпадает, диапазон не изменяется.

Движение, описанное в ITextRange::MoveUntil , является логическим, а не геометрическим. То есть движение к концу или к началу истории. В зависимости от языка, перемещение в конец истории может быть перемещением влево или вправо.

Дополнительные сведения см. в обсуждении В ITextRange и в разделе Примечания статьи ITextRange::Move.

Методы ITextRange::MoveStartUntil и ITextRange::MoveEndUntil перемещают начало и конец соответственно, пока не найдет первый символ, который также находится в наборе, заданном параметром Cset .

Метод ITextRange::MoveUntil аналогичен методу ITextRange::MoveWhile, но есть два отличия. Во-первых, MoveUntil перемещает точку вставки , пока не найдет первый символ, принадлежащий набору символов, указанному в Cset. Во-вторых, в MoveUntil сопоставленный символ считается дополнительным символом в значении, возвращаемом в pDelta. Это позволяет узнать, что символ на одном конце диапазона или другой принадлежит набору Cset , даже если точка вставки остается на одном из концов диапазона.

Например, предположим, что диапазон r является точкой вставки. Чтобы узнать, находится ли символ в r (то есть заданный r.GetChar()) в Cset, вызовите

r.MoveUntil(Cset, 1)

Если символ находится в Cset, возвращаемое значение равно 1, а точка вставки не перемещается. Аналогичным образом, чтобы узнать, находится ли символ, предшествующий r, в Cset, вызовите

r.MoveUntil(Cset, -1)

Если символ находится в Cset, возвращаемое значение равно –1.

Следующая подпрограмма Microsoft Visual Basic для приложений (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
Header tom.h
DLL Msftedit.dll

См. также раздел

Основные понятия

GetChar

ITextRange

Перемещение

MoveEndUntil

MoveStartUntil

MoveTime

Справочные материалы

Текстовая объектная модель