该函数得到指定图形对象的信息,根据图形对象,函数把填充的 BITMAP, DIBSECTION, LOGBRUSH,LOGFONT, 或 LOGPEN 结构体放入一个指定的缓冲区。
原型:
int GetObject(HGDIOBJ hgdiobj, int cbBuffer, LPVOID lpvObject);
参数:
hgdiobj:[in] 图形对象句柄。 可以是a logical bitmap, a brush, a font, a palette, a pen, 或者调用CreateDIBSection生成的DIB。
cbBuffer: [in] 指定将要写到缓冲中的信息的字节数
lpvObject: [in] 缓冲指针,用以取回指定图形对象信息。 下表显示了由hgdiobj指定的信息类型和对应的缓冲区可接收的每种图形对象类型的。
对象类型 | 写入到 *lpvObject 中的数据 |
HBITMAP | BITMAP |
HBITMAP ,从CreateDIBSection 中返回 | DIBSECTION ,如果cbBuffer 设置为 sizeof(DIBSECTION), 或者 BITMAP, 如果 cbBuffer 设置为 sizeof(BITMAP) |
HPALETTE | 逻辑调色板入口数,以WORD类型计算 |
HPEN | LOGPEN |
HBRUSH | LOGBRUSH |
HFONT | LOGFONT |
如果lpvObject 为NULL,返回值为指定图形对象写到缓冲中的信息的字节数
对Windows CE 1.0 and 1.01:
·HPALETTE 对象不支持
·当GetObject 用于DIB片段时,总是返回BITMAP
返回值:
如果函数调用成功,且lpvObject为一个有效指针,则返回值为贮存到缓冲区的字节数目;如果函数调用成功,且lprObject为Null,则返回值为需要容纳的贮存到缓冲区的信息字节数目。
如果函数调用失败,则返回值为0。
获取扩展错误信息,调用GetLastError.
说明:
lpvObject参数指向的缓冲区一定要足够大以接收图形对象的信息。
如果hgdiobj标识一个由GreateDIBSection创建的位图,且指定的缓冲区足够大,则GetObject函数返回一个DIBSECTION结构。另外,DIBSECTION中的BITMAP结构中的bmBits元素含有一个指向位图位值的指针。
如果hgdiobj标识了一个通过其他途径创建的位图,则GetObject只返回位图的宽、高和颜色格式信息,但位图位值指针为NULL。只有位图为DIB时才可以访问他们的每一位。
如果hgdiobj标识了一个逻辑调色板,则GetObject检索一个2字节的整数,该整数指定调色板中的项数,函数不检索定义调色板的LOGPALETTE结构,为检索有关调色板项的信息,应用程序可以调用GetPaletteEntries函数。
参考例子 :
BITMAP bmp;
GetObject(hbFile, sizeof(bmp), &bmp);