getObject 函数 (wingdi.h)

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

语法

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

参数

[in] h

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

[in] c

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

[out] pv

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

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

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

BITMAP

对 CreateDIBSection 的调用返回的 HBITMAP

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

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

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 将水平绘制该字体。

示例

有关示例,请参阅 存储映像

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 wingdi.h (包括 Windows.h)
Library Gdi32.lib
DLL Gdi32.dll

另请参阅

BITMAP

CreateDIBSection

DIBSECTION

设备上下文函数

设备上下文概述

EXTLOGPEN

GetBitmapBits

GetDIBits

GetPaletteEntries

GetRegionData

LOGBRUSH

LOGFONT

LOGPALETTE

LOGPEN