鱼C论坛

 找回密码
 立即注册
查看: 4997|回复: 1

[API档案] GetObject

[复制链接]
发表于 2014-10-24 15:21:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
函数功能:

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)所有,转载请注明来源。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-1-17 23:36:09 | 显示全部楼层
鱼兄,如果是传入hPen的话,GetObject的返回值是什么呢?怎么获得GetObject的返回值呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 00:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表