EngAssociateSurface 函数 (winddi.h)

EngAssociateSurface 函数将给定表面标记为属于指定设备。

语法

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

参数

hsurf

要与 hdev 关联的图面或位图的句柄。 此句柄由 EngCreateBitmapEngCreateDeviceBitmap 返回。

hdev

图面要与之关联的设备的句柄。 这是传递给驱动程序的 DrvCompletePDEV 函数的 GDI 创建的句柄。

flHooks

指定驱动程序可从 GDI 挂钩的函数。 驱动程序必须为它在 flHooks 中设置的每个位实现相应的函数。 此成员是以下任何值的按位 OR:

标志 要挂钩的函数
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

DrvSynchronizeDrvSynchronizeSurface (或同时)

HOOK_SYNCHRONIZEACCESS 已过时
HOOK_TEXTOUT

DrvTextOut

HOOK_TRANSPARENTBLT

DrvTransparentBlt

返回值

如果函数成功,则返回值为 TRUE 。 否则,驱动程序应将信息发送到它正在实现的 GDI 函数,并返回 GDI 的返回值。

注解

打印机驱动程序可以使用 EngAssociateSurface 来实现“规则”或设备字体,或者通过显示驱动程序来使用特殊的 blt 硬件。

如果 hsurf 标识的图面是标准格式位图,则驱动程序可以通过在 flHooks 中设置位来指定它将处理的图面输出函数。 在 flHooks 中设置位会导致将特定输出函数改为发送到驱动程序。 这称为挂钩。 如果驱动程序不挂钩调用,则当绘制标准格式位图时,GDI 将自动管理操作。

当图面关联时,它采用 PDEV 的默认调色板和样式步骤。 在 DrvEnableSurface 返回图面之前,必须关联该图面。

默认情况下,当驱动程序通过实现 DrvCreateDeviceBitmap DrvDeleteDeviceBitmap支持设备位图时,GDI 不会自动将绘图调用同步到设备位图和主图面。/ 例如,GDI 可以调用驱动程序的 DrvBitBlt 函数以绘制到设备位图,而另一个线程通过执行驱动程序的 DrvTextOut 实现来绘制到主图面。 甚至可以调用驱动程序以同时绘制到多个设备位图。

DrvEnableSurface 返回主图柄后,请勿在该图柄上调用 EngAssociateSurface。 在某些情况下,这样做可能会导致 bug 检查。 有关详细信息,请参阅 Microsoft 知识库文章 330248

要求

   
最低受支持的客户端 在 Windows 2000 及更高版本的 Windows 操作系统中可用。
目标平台 通用
标头 winddi.h (包括 Winddi.h)
Library Win32k.lib
DLL Win32k.sys

另请参阅

DrvBitBlt

DrvCompletePDEV

DrvCopyBits

DrvCreateDeviceBitmap

DrvDeleteDeviceBitmap

DrvEnableSurface

DrvFillPath

DrvLineTo

DrvStretchBlt

DrvStrokeAndFillPath

DrvStrokePath

DrvSynchronize

DrvSynchronizeSurface

DrvTextOut

EngModifySurface