EngCreateBitmap 函数 (winddi.h)
EngCreateBitmap 函数请求 GDI 创建和管理位图。
ENGAPI HBITMAP EngCreateBitmap(
SIZEL sizl,
LONG lWidth,
[in] ULONG iFormat,
[in] FLONG fl,
[in] PVOID pvBits
);
sizl
指定一个 SIZEL 结构,其成员包含要创建的位图的宽度和高度(以像素为单位)。 SIZEL 结构与 SIZE 结构相同。
如果 pvBits 不为 NULL,此值应表示设备上可见的所有像素,从而允许设备保留 屏幕外内存。
lWidth
指定位图的分配宽度,即必须添加到指针以向下移动一个扫描行的字节数。
[in] iFormat
根据每个像素所需的颜色信息位数指定位图的格式。 此参数可能是以下值之一:
值 | 含义 |
---|---|
BMF_1BPP | 单色 |
BMF_4BPP | 每像素 4 位 |
BMF_8BPP | 每像素 8 位 |
BMF_16BPP | 每像素 16 位 |
BMF_24BPP | 每像素 24 位 |
BMF_32BPP | 每像素 32 位 |
BMF_4RLE | 每像素 4 位;运行长度编码 |
BMF_8RLE | 每像素 8 位;运行长度编码 |
[in] fl
是一个位掩码,指定要创建的位图的属性。 此参数可以是零,也可以是以下值的任意组合:
值 | 含义 |
---|---|
BMF_NOZEROINIT | 分配位图时,GDI 不会对位图进行零初始化。 仅当 pvBits 为 NULL 时,才会检查此标志。 |
BMF_TOPDOWN | 第一个扫描行表示位图的顶部。 请注意,默认情况下,标准格式位图的底部有第一个扫描行。 |
BMF_USERMEM | GDI 将从用户内存中为位图分配内存。 默认情况下,内存是从内核的地址空间分配的。 仅当其他进程不使用所创建的位图时,才应指定此标志。 打印机驱动程序无法将用户内存传递给 EngWritePrinter 。 |
[in] pvBits
指向要创建的位图的第一个扫描行的指针。 如果此参数为 NULL,GDI 将分配位图像素的存储空间。 如果 pvBits 不为 NULL,则它是指向位图缓冲区的指针。
如果函数成功完成,则返回值是标识所创建位图的句柄。 否则,返回值为 0。 EngCreateBitmap 不记录错误代码。
驱动程序可以选择为位图提供存储。
在从 DrvEnableSurface 返回之前,驱动程序应通过调用 EngAssociateSurface 将创建的位图关联为图面。
不再需要位图时,应使用 EngDeleteSurface 将其删除。
帧缓冲区显示驱动程序应使用 pvBits 参数,从而允许 GDI 直接对显示器进行大部分绘制。
最低受支持的客户端 | 在 Windows 2000 及更高版本的 Windows 操作系统中可用。 |
目标平台 | 通用 |
标头 | winddi.h (包括 Winddi.h) |
Library | Win32k.lib |
DLL | Win32k.sys |