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

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

Синтаксис

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

Параметры

Cset

Тип: VARIANT*

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

Count

Тип: long

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

pDelta

Тип: long*

Фактическое число символов в конце перемещается. Этот параметр может быть нулевым.

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

Тип: HRESULT

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

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

Комментарии

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

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

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

Методы ITextRange::MoveStartWhile и ITextRange::MoveEndWhile перемещают начальную и конечную части соответственно только после всех смежных символов, которые находятся в наборе символов, заданном параметром Cset .

Тип VARIANT в основном предназначен для использования со сценариями IDispatch, такими как Microsoft Visual Basic для приложений (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 соответствует тексту следующей записи SGML в диапазоне r. Записи 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
Header tom.h
DLL Msftedit.dll

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

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

ITextRange

Перемещение

MoveEndWhile

MoveStartTime

MoveUntil

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

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