小甲鱼 发表于 2014-10-24 15:21:20

GetObject

函数功能:

GetObject 函数用于获得指定图形对象的信息。


API 函数原型:

注释:_In_ 说明该参数是输入的,__Out__ 说明该参数是输出的。
int GetObject(
_In_   HGDIOBJ hgdiobj,
_In_   int cbBuffer,
_Out_LPVOID lpvObject
);

参数解析:


参数 含义
hgdiobj 1. 指定目标图形对象的句柄
2. 它可以是这样的一个句柄:逻辑位图、画刷、字体、调色板、画笔或通过调用 CreateDIBsection 函数创建的与设备无关位图
cbBuffer 指定将要写到缓冲区的信息的字节数
lpvObject 指向一个缓冲区的指针(该缓冲区将用于存放指定图形对象的信息)


下边列出的是缓冲区获得的每种图形对象的信息类型(通过 hgdiobj 参数指定)


对象类型 写入到缓冲区的数据
HBITMAP BITMAP 结构
HBITMAP(通过调用 CreateDIBSection 函数获得) 1. DIBSECTION 结构(如果 cbBuffer 参数的值被设置为 sizeof (DIBSECTION))
2. BITMAP 结构(如果 cbBuffer 参数的值被设置为 sizeof (BITMAP))
HPALETTE 逻辑调色板的颜色数(WORD 类型)
HPEN(通过调用 ExtCreatePen 函数获得) EXTLOGPEN 结构
HPEN LOGPEN 结构
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 函数。


【API档案】版权归鱼C工作室(www.fishc.com)所有,转载请注明来源。

WinSDK

fishermanmax 发表于 2017-1-17 23:36:09

鱼兄,如果是传入hPen的话,GetObject的返回值是什么呢?怎么获得GetObject的返回值呢
页: [1]
查看完整版本: GetObject