Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Перемещает точку вставки вперед или назад на указанное количество единиц. Если диапазон не является разроженным, диапазон сворачивается до точки вставки на обоих концах, в зависимости от количества, а затем перемещается.
Синтаксис
HRESULT Move(
long Unit,
long Count,
long *pDelta
);
Параметры
Unit
Тип: long
Единица использования. Значение по умолчанию — tomCharacter. Сведения о других значениях см. в обсуждении в ITextRange.
Count
Тип: long
Число единицдля перемещения. Значение по умолчанию — 1. Если значение Count больше нуля, движение вперед —к концу истории, а если count меньше нуля, то движение назад — к началу. Если значение Count равно нулю, диапазон не изменяется.
pDelta
Тип: long*
Фактическое число единиц, за которые перемещается точка вставки. Указатель может иметь значение NULL. Дополнительные сведения см. в разделе «Примечания».
Возвращаемое значение
Тип: HRESULT
Метод возвращает значение HRESULT . Если методу удалось переместить точку вставки, он возвращает S_OK. Если метод завершается сбоем, он возвращает один из следующих кодов ошибок. Дополнительные сведения о кодах ошибок COM см. в разделе Обработка ошибок в COM.
Код возврата | Описание |
---|---|
|
Единица измерения не поддерживается. |
|
Сбой по какой-то другой причине. |
Комментарии
Если диапазон является вырожденным (точка вставки), этот метод пытается переместить точку вставки CountUnits.
Если диапазон не является разрородным, а значение Count больше нуля, этот метод сворачивает диапазон в позиции конечного символа, перемещает полученную точку вставки вперед на границу единицы измерения (если она еще не находится на единице), а затем пытается переместить Count - 1 Units вперед. Если диапазон не является разрозняемым и значение Count меньше нуля, этот метод сворачивает диапазон в начальной позиции символа, перемещает полученную точку вставки назад на границу единицы измерения (если она еще не находится на единице), а затем пытается переместить |Число| — 1 единицназад. Таким образом, в обоих случаях свертывание неразрожденного диапазона до точки вставки, независимо от того, двигается ли она к началу или концу единицы после свертывания, считается единицей.
Метод ITextRange::Move возвращает pDelta = количество фактически перемещенных единиц. Этот метод никогда не перемещает точку вставки за пределы этого диапазона. Если аргумент CountUnits перемещает точку вставки перед началом истории, она перемещается в начало истории и pDelta устанавливается соответствующим образом. Аналогичным образом, если countUnits перемещает его за пределы конца истории, он перемещается в конец истории.
Метод ITextRange::Move работает аналогично методам MoveLeft и MoveRight , ориентированным на пользовательский интерфейс, за исключением того, что направление движения является логическим, а не геометрическим. То есть при использовании ITextRange::Move направление находится либо к концу, либо к началу истории. В зависимости от языка, движение к концу истории может быть перемещение влево или вправо. Чтобы получить представление о счетчике, нажмите клавиши CTRL+СТРЕЛКА ВПРАВО в документе Microsoft Word для выбора различных вариантов. В тексте слева направо это нажатие клавиш выполняется так же, как Move(tomWord, 1)
и MoveRight(tomWord, 1)
.
Счетчик соответствует количеству нажатий клавиш CTRL+СТРЕЛКА ВПРАВО.
Например, если нажать клавиши CTRL+СТРЕЛКА ВПРАВО для выделения, показанного на обоих следующих рисунках, вы вернеесь к точке вставки в позиции символа 8, так как эта команда сворачивает выделенные фрагменты в их конечных позициях символов (7 и 8 соответственно) и перемещается к следующей границе tomWord .


Move(tomWord, -1)
, и MoveLeft(tomWord, 1)
сворачивает первое выделение в позиции символа 5, которая уже находится на границе tomWord , поэтому больше не происходит никакого движения. Но СОЧЕТАНИЕ КЛАВИШ CTRL+СТРЕЛКА ВЛЕВО сворачивает второе выделение в позиции символа 4, а затем перемещается к нулю, так как это следующая граница tomWord в направлении движения.
Возвращаемый аргумент pDelta задается равным числу единиц, в которых перемещается точка вставки, включая одну единицу для сворачивания неразрожденного диапазона и его перемещения на границу единицы измерения. Таким образом, если движение и сворачивание не происходят, как если диапазон является точкой вставки в конце истории, pDelta устанавливается равным нулю. Этот подход полезен для управления циклами программ, которые обрабатывают всю историю.
В обоих случаях, упомянутых выше, вызов Move(tomWord, 1)
задает значение pDelta равным 1, так как диапазоны были свернуты. Аналогичным образом при вызове Move(tomWord, -1)
значение pDelta равно -1 в обоих случаях. Сворачивание с перемещением части единицы на границу единицы или без нее считается перемещаемой единицей .
Направление движения относится к логическому упорядочению символов в резервном хранилище в виде обычного текста. Такой подход позволяет избежать проблем геометрического упорядочения, таких как слева и справа и вверх и вниз, в международном программном обеспечении. Такие геометрические методы по-прежнему необходимы в механизме редактирования, так как клавиатуры имеют клавиши со стрелками для их вызова. Если диапазон действительно является объектом ITextSelection , можно использовать такие методы, как MoveLeft и MoveRight .
Если в элементе Unit заданы символы (tomCharacter), в текстовой объектной модели (TOM) используется набор символов Юникода. Функции MultiByteToWideChar и WideCharToMultiByte предоставляют простые способы преобразования юникода и многобайтовых наборов символов при импорте и экспорте соответственно. Дополнительные сведения см. в разделе Open. В этой связи использование возврата каретки или канала строки (CR/LF) для разделения абзацев так же проблематично, как и двухбайтовая кодировка (DBCS). Методы пользовательского интерфейса ITextSelection создают резервную копию cr/LF, как если бы это был один символ, но методы ITextRange::Move считают CR/LFs двумя символами. Очевидно, что лучше использовать один символ в качестве разделителя абзаца, который в TOM представлен символом возврата символов, хотя символ разделителя абзаца в Юникоде, 0x2029, принимается. Как правило, подсистемы TOM должны поддерживать CR/LF, возврат каретки (CR), канал строки (LF), вертикальную вкладку, канал форм и 0x2029. Microsoft Rich Edit 2.0 также поддерживает CR/CR/LF для обратной совместимости.
См. также методы ITextRange::MoveStart и ITextRange::MoveEnd, которые перемещают единицыколичества позиций в диапазоне соответственно.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | tom.h |
DLL | Msftedit.dll |
См. также раздел
Основные понятия
Другие ресурсы
Справочные материалы