Функция ScriptXtoCP (usp10.h)
Создает начальный или конечный край кластера логических символов на основе смещения x выполнения.
Синтаксис
HRESULT ScriptXtoCP(
[in] int iX,
[in] int cChars,
[in] int cGlyphs,
[in] const WORD *pwLogClust,
[in] const SCRIPT_VISATTR *psva,
[in] const int *piAdvance,
[in] const SCRIPT_ANALYSIS *psa,
[out] int *piCP,
[out] int *piTrailing
);
Параметры
[in] iX
Смещение в логических единицах от конца выполнения, указанного элементом fLogicalOrder структуры SCRIPT_ANALYSIS , указанной параметром psa .
[in] cChars
Количество логических кодовых точек в выполнении.
[in] cGlyphs
Количество глифов в выполнении.
[in] pwLogClust
Указатель на массив логических кластеров.
[in] psva
Указатель на массив SCRIPT_VISATTR структур, содержащих визуальные атрибуты для глифа.
[in] piAdvance
Указатель на массив расширенных ширин.
[in] psa
Указатель на структуру SCRIPT_ANALYSIS . Элемент fLogicalOrder указывает значение TRUE , чтобы использовать передний край выполнения, или FALSE , чтобы использовать конечный край.
[out] piCP
Указатель на буфер, в котором эта функция извлекает позицию символа, соответствующую координате x.
[out] piTrailing
Указатель на буфер, в котором эта функция извлекает расстояние в кодовых точках от переднего края логического символа до позиции iX . Если это значение равно 0, позиция iX находится на переднем крае логического символа. Дополнительные сведения см. в разделе «Примечания».
Возвращаемое значение
Возвращает 0 в случае успеха. Функция возвращает ненулевое значение HRESULT, если не удалось. Приложение может проверить возвращаемое значение с помощью макросов SUCCEEDED и FAILED .
Комментарии
Значения, передаваемые в эту функцию, обычно являются результатами предыдущих вызовов других функций Uniscribe. Дополнительные сведения см. в разделе Управление размещением курсора и тестированием попаданий .
Начальный и конечный края логического символа определяются направлением текста в выполнении (слева направо или справа налево). Для направления слева направо передний край совпадает с левым краем. Для направления справа налево передним краем является правый край.
Для скриптов, в которых курсор обычно помещается в середину кластера, например арабский и иврит, полученное положение символа может быть для любой кодовой точки в строке. В этом случае параметру piTrailing присваивается значение 0 или 1.
Для скриптов, в которых курсор обычно привязан к границам кластера, позиция полученного символа всегда является позицией первой кодовой точки в кластере (считается логическим). Параметр piTrailing имеет значение 0 или число кодовых точек в кластере.
Соответствующая позиция курсора для нажатия мыши всегда — это позиция полученного символа плюс расстояние, указанное piTrailing.
Когда iX указывает на позицию за пределами выполнения, ScriptXtoCP действует так, как будто за каждым концом выполнения имеется очень большой символ. Это приводит к поведению, приведенному в следующей таблице.
Положение iX (вне запуска) | Результат |
---|---|
Перед выполнением, то есть iX< 0, если выполняется слева направо, или iX> = сумма авансов, если выполнение выполняется справа налево | Значение piCP равно -1, а значение piTrailing — 0 |
После выполнения, то есть iX> = сумма авансов, если выполняется слева направо, или iX< 0, если выполняется справа налево. | Значение piCP — это значение cChars, а значение piTrailing — 1. |
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | usp10.h |
Библиотека | Usp10.lib |
DLL | Usp10.dll |
Распространяемые компоненты | Internet Обозреватель 5 или более поздней версии в Windows Me/98/95 |