Функция ScriptStringAnalyse (usp10.h)
Анализирует строку обычного текста.
Синтаксис
HRESULT ScriptStringAnalyse(
[in] HDC hdc,
[in] const void *pString,
[in] int cString,
[in] int cGlyphs,
[in] int iCharset,
[in] DWORD dwFlags,
[in] int iReqWidth,
[in, optional] SCRIPT_CONTROL *psControl,
[in, optional] SCRIPT_STATE *psState,
[in, optional] const int *piDx,
[in, optional] SCRIPT_TABDEF *pTabdef,
[in] const BYTE *pbInClass,
[out] SCRIPT_STRING_ANALYSIS *pssa
);
Параметры
[in] hdc
Дескриптор контекста устройства. Если параметру dwFlags присвоено значение SSA_GLYPHS, требуется дескриптор контекста устройства. Если для dwFlags задано значение SSA_BREAK, то дескриптор контекста устройства является необязательным. Если указан дескриптор контекста устройства, функция проверяет текущий шрифт в контексте устройства. Если текущий шрифт является символьным шрифтом, функция обрабатывает строку символов как один нейтральный SCRIPT_UNDEFINED элемент.
[in] pString
Указатель на анализируемую строку. Строка должна содержать по крайней мере один символ. Это может быть строка Юникода или использовать кодировку из кодовой страницы Windows ANSI, как указано в параметре iCharset .
[in] cString
Длина анализируемой строки. Длина измеряется в символах для строки ANSI или в расширенных символах для строки Юникода. Длина должна быть не менее 1.
[in] cGlyphs
Размер буфера глифов в значениях WORD. Этот размер является обязательным. Рекомендуемый размер — (1.5 * cString + 16)
.
[in] iCharset
Дескриптор кодировки. Если входная строка является строкой ANSI, для этого дескриптора устанавливается идентификатор кодировки. Если строка является строкой Юникода, этот дескриптор имеет значение -1.
Определены следующие идентификаторы кодировки:
[in] dwFlags
Флаги, указывающие необходимый анализ. Этот параметр может иметь одно из значений, перечисленных в следующей таблице.
Значение | Значение |
---|---|
|
Получение флагов останова, то есть символов и слов. |
|
Закрепите строку в iReqWidth. |
|
Укажите глифы представления для управляющих символов. |
|
Используйте резервные шрифты. |
|
Оправдайте строку до iReqWidth. |
|
Получение отсутствующих глифов и pwLogClust с помощью соглашений GetCharacterPlacement . |
|
Создание глифов, позиций и атрибутов. |
|
Удалите первый & из отображаемой строки. |
|
Замените "&" подчеркиванием на последующей кодовой точке. |
|
Отображать только подчеркивание. Результирующий битовый шаблон может отображаться с помощью маски XOR для переключения видимости подчеркивания горячей клавиши без нарушения текста. |
|
Применение связывания и сопоставления восточноазиатских шрифтов к некомплексным текстам. |
|
Записывайте элементы с помощью вызовов ExtTextOutW , а не с глифами. |
|
Повторяющаяся входная строка, содержащая один символ cString times. |
|
Используйте базовый уровень внедрения 1. |
|
Разверните вкладки. |
[in] iReqWidth
Ширина, необходимая для установки или обрезки.
[in, optional] psControl
Указатель на структуру SCRIPT_CONTROL . Приложение может присвоить этому параметру значение NULL , чтобы указать, что все члены SCRIPT_CONTROL имеют значение 0.
[in, optional] psState
Указатель на структуру SCRIPT_STATE . Приложение может задать для этого параметра значение NULL , чтобы указать, что все члены SCRIPT_STATE имеют значение 0. Элемент uBidiLevelSCRIPT_STATE игнорируется. Используемое значение является производным от флага SSA_RTL в сочетании с макетом контекста устройства.
[in, optional] piDx
Указатель на запрошенный логический массив dx.
[in, optional] pTabdef
Указатель на структуру SCRIPT_TABDEF . Это значение является обязательным, только если параметру dwFlags присвоено значение SSA_TAB.
[in] pbInClass
Указатель на значение BYTE, указывающее классификации символов GetCharacterPlacement .
[out] pssa
Указатель на буфер, в котором эта функция извлекает структуру SCRIPT_STRING_ANALYSIS . Эта структура динамически выделяется при успешном возвращении из функции.
Возвращаемое значение
В случае успешного выполнения возвращает S_OK. Функция возвращает ненулевое значение HRESULT, если не удалось.
Ошибки возвращаются:
- E_INVALIDARG. Обнаружен недопустимый параметр.
- USP_E_SCRIPT_NOT_IN_FONT. SSA_FALLBACK не указан или отсутствует стандартный резервный шрифт.
Функция также может возвращать системную ошибку, преобразованную в тип HRESULT. Например, возвращается ошибка из-за нехватки памяти или вызова GDI с использованием контекста устройства.
Комментарии
Использование этой функции является первым шагом в обработке строк обычного текста. Такая строка имеет только один шрифт, один стиль, один размер, один цвет и т. д. ScriptStringAnalyse выделяет временные буферы для анализа элементов, глифов, расширенных ширин и т. д. Затем автоматически запускаются ScriptItemize, ScriptShape, ScriptPlace и ScriptBreak. Результаты доступны во всех других функциях ScriptString* .
При успешном возвращении из этой функции pssa указывает динамически выделенную структуру, которую приложение может последовательно передавать другим функциям ScriptString* . Приложение должно в конечном итоге освободить структуру, вызвав ScriptStringFree.
Хотя функциональность ScriptStringAnalyse может быть реализована путем прямых вызовов других функций, использование самой функции значительно сокращает объем кода, необходимого в приложении для обработки обычного текста.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | usp10.h |
Библиотека | Usp10.lib |
DLL | Usp10.dll |
Распространяемые компоненты | Internet Обозреватель 5 или более поздней версии в Windows Me/98/95 |