GetObject 函数 (wingdi.h)

GetObject 函数检索指定图形对象的信息。

Syntax

int GetObject(
  [in]  HANDLE h,
  [in]  int    c,
  [out] LPVOID pv
);

参数

[in] h

感兴趣的图形对象的句柄。 这可以是以下项之一的句柄:逻辑位图、画笔、字体、调色板、笔或通过调用 CreateDIBSection 函数创建的独立于设备的位图。

[in] c

要写入缓冲区的信息字节数。

[out] pv

指向接收指定图形对象相关信息的缓冲区的指针。

下表显示了缓冲区为可以使用 hgdiobj 指定的每种图形对象接收的信息类型。

对象类型 写入缓冲区的数据
HBITMAP

位图

对 CreateDIBSection 的调用返回的 HBITMAP

DIBSECTION,如果 cbBuffer 设置为 sizeof (DIBSECTION),则 为 BITMAP(如果 cbBuffer 设置为 sizeof (BITMAP))。

HPALETTE
逻辑调色板中条目数的 WORD 计数
HPEN 从对 ExtCreatePen 的调用返回

EXTLOGPEN

HPEN

LOGPEN

HBRUSH

LOGBRUSH

HFONT

LOGFONT

 

如果 lpvObject 参数为 NULL,则函数返回值是存储它写入到指定图形对象的缓冲区中的信息所需的字节数。

lpvObject 的地址必须位于 4 字节边界上;否则,GetObject 将失败。

返回值

如果函数成功, 并且 lpvObject 是有效的指针,则返回值是存储在缓冲区中的字节数。

如果函数成功且 lpvObjectNULL,则返回值是保存函数将存储到缓冲区中的信息所需的字节数。

如果函数失败,则返回值为零。

注解

lpvObject 参数指向的缓冲区必须足够大,才能接收有关图形对象的信息。 根据图形对象,该函数使用 BITMAPDIBSECTIONEXTLOGPENLOGBRUSHLOGFONTLOGPEN 结构,或表项计数(对于逻辑调色板)。

如果 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

另请参阅

位图

CreateDIBSection

DIBSECTION

设备上下文函数

设备上下文概述

EXTLOGPEN

GetBitmapBits

GetDIBits

GetPaletteEntries

GetRegionData

LOGBRUSH

LOGFONT

LOGPALETTE

LOGPEN