EngAssociateSurface 函数 (winddi.h)
EngAssociateSurface 函数将给定表面标记为属于指定设备。
语法
ENGAPI BOOL EngAssociateSurface(
HSURF hsurf,
HDEV hdev,
FLONG flHooks
);
参数
hsurf
要与 hdev 关联的图面或位图的句柄。 此句柄由 EngCreateBitmap 或 EngCreateDeviceBitmap 返回。
hdev
图面要与之关联的设备的句柄。 这是传递给驱动程序的 DrvCompletePDEV 函数的 GDI 创建的句柄。
flHooks
指定驱动程序可从 GDI 挂钩的函数。 驱动程序必须为它在 flHooks 中设置的每个位实现相应的函数。 此成员是以下任何值的按位 OR:
标志 | 要挂钩的函数 |
---|---|
HOOK_ALPHABLEND | |
HOOK_BITBLT | |
HOOK_COPYBITS | |
HOOK_FILLPATH | |
HOOK_GRADIENTFILL | |
HOOK_LINETO | |
HOOK_MOVEPANNING | 已过时 |
HOOK_PAINT | 已过时 |
HOOK_PLGBLT | |
HOOK_STRETCHBLT | |
HOOK_STRETCHBLTROP | |
HOOK_STROKEANDFILLPATH | |
HOOK_STROKEPATH | |
HOOK_SYNCHRONIZE |
DrvSynchronize 或 DrvSynchronizeSurface (或同时) |
HOOK_SYNCHRONIZEACCESS | 已过时 |
HOOK_TEXTOUT | |
HOOK_TRANSPARENTBLT |
返回值
如果函数成功,则返回值为 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 |