EngControlSprites 函数 (winddi.h)
EngControlSprites 函数在指定的 WNDOBJ 区域下拉或重绘子画面。
语法
ENGAPI BOOL EngControlSprites(
WNDOBJ *pwo,
FLONG fl
);
参数
pwo
指向正在生成或拆除子画面的 WNDOBJ 结构的指针。
fl
此参数可能是以下值之一:
ECS_TEARDOWN
请求 GDI 删除并删除与 WNDOBJ 区域重叠的任何子画面的子画面效果。 换句话说,GDI 使用中和效果重绘子画面,使子画面在屏幕上不可见。 GDI 通过立即调用 DrvCopyBits 来还原子画面下方的区域。
ECS_REDRAW
请求 GDI 重绘,还原与 WNDOBJ 区域重叠的任何子画面。 GDI 通过调用 DrvCopyBits 直接重绘到屏幕。
返回值
成功完成请求的操作后,EngControlSprites 返回 TRUE;否则返回 FALSE。
注解
ECS_TEARDOWN的调用可能是永久性的。 例如,驱动程序可以在创建 WNDOBJ 后立即使用ECS_TEARDOWN调用 EngControlSprites 一次,并且不会在窗口顶部绘制任何子画面。
驱动程序可以使用 ECS_REDRAW 多次调用 EngControlSprites ,而无需使用ECS_TEARDOWN进行干预调用,以强制随时重新绘制子画面。
ECS_TEARDOWN始终强制在 WNDOBJ 区域顶部立即重绘任何子画面。 GDI 通过调用 DrvCopyBits 从屏幕复制子画面下的位来保存子画面下的位,然后通过调用 DrvCopyBits 将子画面复合到屏幕上。 这可用于允许在交换缓冲区命令通过 DrvSwapBuffers 或任何其他驱动程序交换缓冲区机制) 发送到硬件 (之前,将子画面复合到后台缓冲区上。 这允许在窗口为双重缓冲时无缝合成子画面,而不会闪烁。
ECS_TEARDOWN永远不会发送WOC_SPRITE_NO_OVERLAP消息,同样,ECS_REDRAW也永远不会导致发送WOC_SPRITE_OVERLAP消息。
即使当前没有子画面与 WNDOBJ 区域重叠,也可以调用 EngControlSprites。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 在 Windows 2000 及更高版本的 Windows 操作系统中可用。 |
目标平台 | 通用 |
标头 | winddi.h (包括 Winddi.h) |
Library | Win32k.lib |
DLL | Win32k.sys |