函数功能:
CreateDIBSection 函数用于创建一个应用程序可以直接写入的 DIB(设备无关位图文件)。
该函数返回一个指向位图位数据值的指针。你可以提供一个文件映射对象的句柄,该函数将会使用这个文件映射对象来创建位图,或者让系统为位图分配内存。
API 函数原型:
注释:_In_ 说明该参数是输入的,_Out_ 说明该参数是输出的。
HBITMAP CreateDIBSection( _In_ HDC hdc, _In_ const BITMAPINFO *pbmi, _In_ UINT iUsage, _Out_ VOID **ppvBits, _In_ HANDLE hSection, _In_ DWORD dwOffset );
参数解析:
|
参数 |
含义 |
||||||
|
hdc |
1. 指定设备环境句柄 |
||||||
|
pbmi |
指向 BITMAPINFO 结构体的指针,该结构体指定了 DIB 的各种属性,包括位图的维数和颜色 |
||||||
|
iUsage |
1. 指定由 pbmi 参数(逻辑调色板索引值或是文本 RGB 值)指向的 BITMAPINFO 结构中的成员 bmiColors 数组包含的数据类型
|
||||||
|
ppvBits |
指向一个变量的指针,该变量接收一个指向 DIB 位数据值的指针 |
||||||
|
hSection |
1. 指定文件映射对象的句柄。该函数将会使用该文件映射对象来创建 DIB。该参数可以是 NULL |
||||||
|
dwOffset |
1. 指定从 hSection 引用的文件映射对象开始处算起的偏移量,并且这个偏移量指示位图的位数据值开始存放的地方 |
返回值:
1. 如果函数调用成功,那么返回值是一个指向刚刚创建的 DIB 的句柄,并且 *ppvBits 指向该位图的位数据值;
2. 如果函数调用失败,那么返回值为 NULL,并且 *ppvBit 也为 NULL。
该函数能返回下列值:
|
返回码 |
描述 |
|
ERROR_INVALID_PARAMETER |
一个或多个输入参数无效 |
备注:
1. 正如上面提到过的,如果 hSection 参数的值为 NULL,那么系统为 DIB 分配内存。当以后通过调用 DeleteObject 函数删除该 DIB 时,系统将关闭指向相应内存的句柄。如果 hSection 的值不为 NULL,那么在调用 DeleteObject 删除该位图之后,你必须自己关闭 hSection 内存句柄。
2.你不能将一个 DIB 段从一个应用程序粘贴到另一个应用程序。
3. CreateDIBSection 不使用 BITMAPINFOHEADER 结构的 biXPelsPerMeter 或 biYPelsPerMeter 成员
参数,并且将不提供在 BITMAPINFO 结构中的分辨率信息。
4.你必须确保在自己绘制位图之前,GDI 子系统已经完成对所有由 CreateDIBSection 创建的位图的绘制。访问位图必须是同步的。这可以通过调用 GdiFlush 函数来完成。这适用于任何指向位图的位数据值指针的情况,也包括在调用像 SetDIBits 这样的函数时传送指针的情形。
ICM:不进行颜色管理。
需求:
|
Minimum supported client |
Windows 2000 专业版 [仅桌面应用程序] |
|
Minimum supported server |
Windows 2000 服务器版 [仅桌面应用程序] |
|
Header |
Wingdi.h (包含于 Windows.h) |
|
Library |
Gdi32.lib |
|
DLL |
Gdi32.dll |




