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


Функция EngAssociateSurface (winddi.h)

Функция EngAssociateSurface помечает заданную поверхность как принадлежащая указанному устройству.

Синтаксис

ENGAPI BOOL EngAssociateSurface(
  HSURF hsurf,
  HDEV  hdev,
  FLONG flHooks
);

Параметры

hsurf

Дескриптор поверхности или точечный рисунок, который будет связан с hdev. Этот дескриптор был возвращен EngCreateBitmap или EngCreateDeviceBitmap.

hdev

Дескриптор устройства, с которым должна быть связана поверхность. Это созданный GDI дескриптор, который был передан в функцию DrvCompletePDEV драйвера.

flHooks

Указывает функции, которые драйвер может перехватить из GDI. Драйвер должен реализовать соответствующую функцию для каждого бита, который он задает в flHooks. Этот элемент является побитовой или любого из следующих значений:

Flag Функция для подключения
HOOK_ALPHABLEND

DrvAlphaBlend

HOOK_BITBLT

DrvBitBlt

HOOK_COPYBITS

DrvCopyBits

HOOK_FILLPATH

DrvFillPath

HOOK_GRADIENTFILL

DrvGradientFill

HOOK_LINETO

DrvLineTo

HOOK_MOVEPANNING Устаревшие.
HOOK_PAINT Устаревшие.
HOOK_PLGBLT

DrvPlgBlt

HOOK_STRETCHBLT

DrvStretchBlt

HOOK_STRETCHBLTROP

DrvStretchBltROP

HOOK_STROKEANDFILLPATH

DrvStrokeAndFillPath

HOOK_STROKEPATH

DrvStrokePath

HOOK_SYNCHRONIZE

DrvSynchronize или DrvSynchronizeSurface (либо оба)

HOOK_SYNCHRONIZEACCESS Устаревшие.
HOOK_TEXTOUT

DrvTextOut

HOOK_TRANSPARENTBLT

DrvTransparentBlt

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

Возвращаемое значение равно TRUE , если функция выполнена успешно. В противном случае драйвер должен отправить сведения в реализуемую функцию GDI и вернуть возвращаемое значение GDI.

Комментарии

EngAssociateSurface может использоваться драйверами принтера для реализации "правил" или шрифтов устройств, а также драйверами дисплея для использования специального оборудования blt.

Если поверхность, определяемая hsurf, является растровым изображением стандартного формата, драйвер может указать, какие функции вывода будут обрабатываться на поверхности, задавая биты в flHook. Задание битов в flHook приводит к отправке определенных выходных функций в драйвер. Это называется перехватчиком. Если драйвер не перехватывает вызов, GDI автоматически управляет операцией при рисовании растрового изображения стандартного формата.

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

По умолчанию, когда драйвер поддерживает растровые изображения устройства путем реализации DrvCreateDeviceBitmap/DrvDeleteDeviceBitmap, GDI не синхронизирует автоматически вызовы рисования с растровым изображением устройства и с основной поверхностью. Например, GDI может вызывать функцию DrvBitBlt драйвера для рисования на растровом рисунке устройства, в то время как другой поток рисует на основную поверхность, выполняя реализацию Драйвера DrvTextOut. Драйвер можно даже вызвать для одновременного рисования на нескольких точечных изображениях устройства.

После того как DrvEnableSurface вернет дескриптор основной поверхности, не вызывайте EngAssociateSurface для этого дескриптора. Это может привести к ошибке проверка в определенных обстоятельствах. Дополнительные сведения см. в статье базы знаний Майкрософт 330248.

Требования

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

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

DrvBitBlt

DrvCompletePDEV

DrvCopyBits

DrvCreateDeviceBitmap

DrvDeleteDeviceBitmap

DrvEnableSurface

DrvFillPath

DrvLineTo

DrvStretchBlt

DrvStrokeAndFillPath

DrvStrokePath

DrvSynchronize

DrvSynchronizeSurface

DrvTextOut

EngModifySurface