函数功能:
GetObject 函数用于获得指定图形对象的信息。
API 函数原型:
注释:_In_ 说明该参数是输入的,__Out__ 说明该参数是输出的。
int GetObject( _In_ HGDIOBJ hgdiobj, _In_ int cbBuffer, _Out_ LPVOID lpvObject );
参数解析:
|
参数 |
含义 |
|
hgdiobj |
1. 指定目标图形对象的句柄 |
|
cbBuffer |
指定将要写到缓冲区的信息的字节数 |
|
lpvObject |
指向一个缓冲区的指针(该缓冲区将用于存放指定图形对象的信息) |
下边列出的是缓冲区获得的每种图形对象的信息类型(通过 hgdiobj 参数指定)
|
对象类型 |
写入到缓冲区的数据 |
|
HBITMAP |
BITMAP 结构 |
|
HBITMAP(通过调用 CreateDIBSection 函数获得) |
1. DIBSECTION 结构(如果 cbBuffer 参数的值被设置为 sizeof (DIBSECTION)) |
|
HPALETTE |
逻辑调色板的颜色数(WORD 类型) |
|
HPEN(通过调用 ExtCreatePen 函数获得) |
EXTLOGPEN 结构 |
|
HPEN |
|
|
HBRUSH |
LOGBRUSH 结构 |
|
HFONT |
LOGFONT 结构 |
注释:lpvObject 参数指向的地址必须是 4 字节的倍数,否则 GetObject 函数调用失败。
返回值:
1. 如果函数调用成功,且 lpvObject 参数是一个有效的指针,则返回值是存储到缓冲区的字节数;
2. 如果函数调用成功,而 lpvObject 参数是 NULL,则返回值是需要存储到缓冲区的信息的字节数;
3. 如果函数调用失败,返回值是 0。
备注:
1. lpvObject 参数指向的缓冲区一定要足够大以接收图形对象的信息。
2. 如果 hgdiobj 参数指定一个由调用 CreateDIBSection 函数创建的位图,且指定的缓冲区足够大,则 GetObject 函数返回一个 DIBSECTION 结构。
3. 如果 hgdiobj 参数指定一个通过其他途径创建的位图,则 GetObject 只返回位图的宽、高和颜色格式信息,通过调用 GetDIBits 或 GetBitmapBits 函数可以得到位置的位值。
4. 如果 hgdiobj 参数指定一个逻辑调色板,则 GetObject 获得一个 2 字节的整数,该整数指定调色板中的项数,函数不会获得定义调色板的 LOGPALETTE 结构,为了获得有关调色板项的信息,应用程序可以调用 GetPaletteEntries 函数。




