Поделиться через


функция STROBJ_bEnumPositionsOnly (winddi.h)

Функция STROBJ_bEnumPositionsOnly перечисляет удостоверения и позиции глифов для указанной текстовой строки, но не создает кэшированные растровые изображения глифов.

Синтаксис

ENGAPI BOOL STROBJ_bEnumPositionsOnly(
  STROBJ    *pstro,
  ULONG     *pc,
  PGLYPHPOS *ppgpos
);

Параметры

pstro

Предоставленный вызывающим объектом указатель на структуру STROBJ , описывающую текстовую строку. Обычно это структура STROBJ, полученная функцией DrvTextOut драйвера.

pc

Адрес, предоставленный вызывающим абонентом, для получения предоставленного GDI числа структур GLYPHPOS, на которые указывает указатель в ppgpos.

ppgpos

Адрес, предоставленный вызывающим абонентом, который получает предоставленный GDI указатель на массив структур GLYPHPOS . (См. следующий раздел примечаний .)

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

Возвращаемое значение равно TRUE , если нужно перечислить больше глифов, или FALSE , если перечисление завершено. Возвращаемое значение DDI_ERROR, если не удается перечислить глифы и регистрируется код ошибки.

Комментарии

Функция STROBJ_bEnumPositionsOnly обычно вызывается из функции DrvTextOut драйвера. Он выполняет те же операции, что и STROBJ_bEnum с одним важным исключением — GDI не создает кэшированные растровые изображения глифов. Функция STROBJ_bEnum предполагает, что драйверу в конечном итоге потребуются эти растровые изображения. Однако многие новые принтеры содержат внутренние растеризаторы и поэтому не нуждаются в GDI для отрисовки глифов. Для таких принтеров исключение автоматической отрисовки и кэширования растровых изображений глифов в памяти сервера обеспечивает значительную экономию времени обработки и выделения памяти.

Для принтеров, поддерживающих внутреннюю растровую растеризацию глифов, следует соблюдать следующие правила:

  • Драйвер должен установить флаг GCAPS_FONT_RASTERIZER в своей структуре DEVINFO .
  • Функция DrvTextOut драйвера должна вызывать STROBJ_bEnumPositionsOnly , а не STROBJ_bEnum.
  • Если задание печати содержит шрифт, который устройство не может растеризовать внутри, драйвер должен вызвать FONTOBJ_cGetGlyphs для получения растровых изображений глифов.
  • Если драйверу необходимо определить вероятное положение принтера после печати текстовой строки, но не нужен глиф шрифта, он может вызвать STROBJ_bGetAdvanceWidths.
Поскольку GDI не создает кэшированные растровые изображения глифов, содержимое объединения GLYPHDEF в каждой возвращаемой структуре GLYPHPOS будет иметь значение NULL.

Требования

Требование Значение
Минимальная версия клиента Доступно в Windows 2000 и более поздних версиях операционных систем Windows.
Целевая платформа Универсальное
Верхняя часть winddi.h (включая Winddi.h)
Библиотека Win32k.lib
DLL Win32k.sys

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

DrvTextOut

FONTOBJ_cGetGlyphs

GLYPHDEF

GLYPHPOS

STROBJ

STROBJ_bEnum

STROBJ_bGetAdvanceWidths