GetObject 函数检索指定图形对象的信息。
Syntax
int GetObject(
[in] HANDLE h,
[in] int c,
[out] LPVOID pv
);
参数
[in] h
感兴趣的图形对象的句柄。 这可以是以下项之一的句柄:逻辑位图、画笔、字体、调色板、笔或通过调用 CreateDIBSection 函数创建的独立于设备的位图。
[in] c
要写入缓冲区的信息字节数。
[out] pv
指向接收指定图形对象相关信息的缓冲区的指针。
下表显示了缓冲区为可以使用 hgdiobj 指定的每种图形对象接收的信息类型。
| 对象类型 | 写入缓冲区的数据 |
|---|---|
|
|
|
DIBSECTION,如果 cbBuffer 设置为 |
|
逻辑调色板中条目数的 WORD 计数 |
|
|
|
|
|
|
|
如果 lpvObject 参数为 NULL,则函数返回值是存储它写入到指定图形对象的缓冲区中的信息所需的字节数。
lpvObject 的地址必须位于 4 字节边界上;否则,GetObject 将失败。
返回值
如果函数成功, 并且 lpvObject 是有效的指针,则返回值是存储在缓冲区中的字节数。
如果函数成功且 lpvObject 为 NULL,则返回值是保存函数将存储到缓冲区中的信息所需的字节数。
如果函数失败,则返回值为零。
注解
lpvObject 参数指向的缓冲区必须足够大,才能接收有关图形对象的信息。 根据图形对象,该函数使用 BITMAP、 DIBSECTION、 EXTLOGPEN、 LOGBRUSH、 LOGFONT 或 LOGPEN 结构,或表项计数(对于逻辑调色板)。
如果 hgdiobj 是通过调用 CreateDIBSection 创建的位图的句柄,并且指定的缓冲区足够大, 则 GetObject 函数将返回 DIBSECTION 结构。 此外,DIBSECTION 中包含的 BITMAP 结构的 bmBits 成员将包含指向位图位值的指针。
如果 hgdiobj 是通过任何其他方式创建的位图的句柄, GetObject 仅返回位图的宽度、高度和颜色格式信息。 可以通过调用 GetDIBits 或 GetBitmapBits 函数来获取位图的位值。
如果 hgdiobj 是逻辑调色板的句柄, GetObject 将检索一个 2 字节整数,该整数指定调色板中的条目数。 该函数不检索定义调色板的 LOGPALETTE 结构。 若要检索有关调色板条目的信息,应用程序可以调用 GetPaletteEntries 函数。
如果 hgdiobj 是字体的句柄,则返回的 LOGFONT 是用于创建字体的 LOGFONT 。 如果 Windows 必须对字体进行一些内插,因为无法表示精确的 LOGFONT ,则内插不会反映在 LOGFONT 中。 例如,如果要求垂直版本的字体不支持垂直绘制, 则 LOGFONT 表示字体是垂直的,但 Windows 会水平绘制它。
例子
有关示例,请参阅 存储映像。
要求
| Requirement | 价值 |
|---|---|
| 最低支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
| 支持的最低服务器 | Windows 2000 Server [仅限桌面应用] |
| 目标平台 | Windows操作系统 |
| Header | wingdi.h (包括 Windows.h) |
| Library | Gdi32.lib |
| DLL | Gdi32.dll |