複製鏈接
請複製以下鏈接發送給好友

GetObject

鎖定
GetObject函數得泛指得到對象,到指定圖形對象的信息,根據圖形對象,函數把填滿的或結構,或表項(用於邏輯調色板)數目放入一個指定的緩衝區。
外文名
GetObject
類    型
函數
函數原型
int GetObject(HGDIOBJ hgdiobj, int cbBuffer, LPVOID lpvObject)

GetObject函數簡介

函數原型:int GetObject(HGDIOBJ hgdiobj, int cbBuffer, LPVOID lpvObject);
參數:
hgdiobj:指向感興趣的圖形對象的句柄,它可以是這樣的一個句柄:一個邏輯位圖、一個刷子、一種字體、一個調色板、筆或通過調用CreateDIBSection函數創建的與設備無關位圖。
cbBuffer:指定將要寫到緩衝區的信息的字節數目。
lpvObject:指向一個緩衝區的指針,該緩衝區將要檢索指定圖形對象的信息。
下面列出的是緩衝區為每種圖形對象類型可接收的信息和類型,可用hgdiobj來指定,寫入*lpvObject: HBITMAP BITMAP。
HBITMAP:如果cbBuffer被設置為sizeof(DIBSECTION)或sizeof(BITMAP),則從對CreatDIBSection函數的DIBSECTION調用中返回。
HPALETTE:邏輯調色板入口數的WORD數目。
HPEN:從對ExtCreatePen函數的LXTLOGPEN調用中返回。
HPENLOGPEN; HBRUSH LOGBRUSH; HFONT LOGFONT
如果lpvObject參數為Null,則函數返回值為指定圖形對象需要把信息貯存到緩衝區的字節數目。
返回值:如果函數調用成功,且lpvObject為一個有效指針,則返回值為貯存到緩衝區的字節數目;如果函數調用成功,且lprObject為Null,則返回值為需要容納的貯存到緩衝區的信息字節數目;如果函數調用失敗,則返回值為0。
Windows NT:若想獲得更多錯誤信息,可調用GetLastError函數。
註釋:lpvObject參數指向的緩衝區一定要足夠大以接收圖形對象的信息。
如果hgdiobj標識一個由調用CreateDIBSection創建的位圖,且指定的緩衝區足夠大,則GetObject函數返回一個DIBSECTION結構。另外,DIBSECTION中的BITMAP結構中的bmBits元素含有一個指向位圖位值的指針
如果hgdiobj標識了一個通過其他途徑創建的位圖,則GetObject只返回位圖的寬、高和顏色格式信息,通過調用GetDIBitsGetBitmapBits函數可以得到位置的位值。
如果hgdiobj標識了一個邏輯調色板,則GetObject檢索一個2字節的整數,該整數指定調色板中的項數,函數不檢索定義調色板的LOGPALETTE結構,為檢索有關調色板項的信息,應用程序可以調用GetPaletteEntries函數。
Windows CE:在Windows CE 1.0中,當用在DIB上中,GetObject總返回一個BITMAP。Windows CE 1.0不支持lpvObject參數的HPALETTE值。此函數在Windows CE 2.0與在Windows桌面上一樣。
速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本;頭文件:wingdi.h;庫文件:gdi32.lib;Unicode:在Windows NT上實現為Unicode和ANSI兩種版本。

GetObject程序示例

下面是在應用程序中獲取位圖文件*.bmp的大小信息的核心代碼:
HBITMAP hBitmapImag;
int nWidth, nHeight;
hBitmapImag = LoadBitmap (hInstance, TEXT ("D:\\photos\\Matthew.bmp")) ;
GetObject (hBitmapImag, sizeof (BITMAP), &bitmap) ;
nWidth = bitmap.bmWidth;
nHeight = bitmap.bmHeight;
///////////////
// your code
///////////////
DeleteObject (hBitmapImag);