Метод 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.
Код возврата | Описание |
---|---|
|
Недопустимый набор Cset . |
|
Сбой по какой-либо другой причине. |
Комментарии
Если символ не совпадает, диапазон не изменяется.
Движение, описанное в 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 |
См. также раздел
Основные понятия
Справочные материалы