描述
GetObject函数检索指定图形对象的信息。
C++ 语法
int GetObject( __in HGDIOBJ hgdiobj, __in int cbBuffer, __out LPVOID lpvObject ); |
PowerBASIC 语法
FUNCTION GetObjectA ( _ BYVAL hgdiobj AS DWORD, _ BYVAL cbBuffer AS LONG, _ BYREF lpvObject AS ANY _ ) AS LONG |
Unicode版本:
FUNCTION GetObjectW ( _ BYVAL hgdiobj AS DWORD, _ BYVAL cbBuffer AS LONG, _ BYREF lpvObject AS ANY _ ) AS LONG |
参数
hgdiobj
[in]处理感兴趣的图形对象。这可以是以下之一的句柄:通过调用CreateDIBSection函数创建的逻辑位图,画笔,字体,调色板,笔或与设备无关的位图。
cbBuffer
[in]指定要写入缓冲区的信息的字节数。
lpvObject
[out]指向接收有关指定图形对象的信息的缓冲区的指针。
下表显示了可以使用hgdiobj指定的每种图形对象类型的缓冲区接收的信息类型。
对象类型 |
数据写入缓冲区 |
HBITMAP |
BITMAP |
HBITMAP从CreateDIBSection的电话中返回 |
DIBSECTION,如果cbBuffer设置为SIZEOF(DIBSECTION)或BITMAP,如果cbBuffer设置为SIZEOF(BITMAP) |
HPALETTE |
WORD逻辑调色板中条目数的计数 |
HPEN从致电ExtCreatePen |
EXTLOGPEN |
HPEN |
LOGPEN |
HBRUSH |
LOGBRUSH |
HFONT |
LOGFONT |
如果lpvObject参数为NULL,则函数返回值是将其写入指定图形对象的缓冲区的信息所需的字节数。
返回值
如果函数成功,并且lpvObject是有效的指针,则返回值是存储到缓冲区中的字节数。
如果函数成功,并且lpvObject为NULL,则返回值是保存函数将存储到缓冲区中的信息所需的字节数。
如果函数失败,返回值为零。
Windows NT / 2000 / XP / Vista / Windows 7:要获取扩展错误信息,请调用GetLastError.
备注
lpvObject参数指向的缓冲区必须足够大以接收有关图形对象的信息。根据图形对象,该函数使用BITMAP,DIBSECTION,EXTLOGPEN,LOGBRUSH,LOGFONT或LOGPEN结构或表条目数(对于逻辑调色板)。
如果hgdiobj是通过调用CreateDIBSection创建的位图的句柄,并且指定的缓冲区足够大,则GetObject函数返回DIBSECTION结构。此外,BITMAP{BITMAP}BITMAP中{BITMAP}的{??989796190}成员将包含指向位图的位值的指针。
如果hgdiobj是通过任何其他方式创建的位图的句柄,GetObject仅返回位图的宽度,高度和颜色格式信息。您可以通过调用GetDIBits或GetBitmapBits函数来获取位图的位值。
如果hgdiobj是逻辑调色板的句柄,GetObject将检索一个指定调色板中条目数的2字节整数。该函数不检索定义调色板的LOGPALETTE结构。要检索有关调色板条目的信息,应用程序可以调用GetPaletteEntries函数。
如果hgdiobj是字体的句柄,则返回的LOGFONT是用于创建字体的LOGFONT.如果Windows必须对字体进行一些内插,因为无法表示精确的LOGFONT,插值将不会反映在LOGFONT中。例如,如果您要求不支持垂直绘画的垂直版本的字体,则LOGFONT表示字体是垂直的,但Windows将水平绘制。
Windows 95/98 / Me:Microsoft Layer for Unicode支持GetObjectW.
引用文件 #INCLUDE Once
WinGdi.inc(包括Windows.inc)