SelectObject,計算機程式語言函式,該函式選擇一對象到指定的設備上下文環境中,該新對象替換先前的相同類型的對象。
基本介紹
- 中文名:SelectObject
- hdc:設備上下文環境的句柄
- hgdiobj:被選擇的對象的句柄
- Windows NT:3.1及以上版本
介紹,示例,
介紹
CPen* SelectObject( CPen* pPen );
CBrush* SelectObject( CBrush* pBrush );
virtual CFont* SelectObject( CFont* pFont );
CBitmap* SelectObject( CBitmap* pBitmap );
int SelectObject( CRgn* pRgn );
CGdiObject* SelectObject( CGdiObject* pObject );
函式功能:該函式選擇一對象到指定的設備上下文環境中,該新對象替換先前的相同類型的對象。
函式原型:HGDIOBJ SelectObject(HDC hdc, HGDIOBJ hgdiobj)
參數:
hdc:設備上下文環境的句柄。
hgdiobj:被選擇的對象的句柄,該指定對象必須由如下的函式創建。
點陣圖:CreateBitmap, CreateBitmapIndirect, CreateCompatible Bitmap, CreateDIBitmap, CreateDIBsection(只有記憶體設備上下文環境可選擇點陣圖,並且在同一時刻只能一個設備上下文環境選擇點陣圖)。
畫刷:CreateBrushIndirect, CreateDIBPatternBrush, CreateDIBPatternBrushPt, CreateHatchBrush, CreatePatternBrush, CreateSolidBrush。
字型:CreateFont, CreateFontIndirect。
筆:CreatePen, CreatePenIndirect。
區域:CombineRgn, CreateEllipticRgn, CreateEllipticRgnIndirect, CreatePolygonRgn, CreateRectRgn, CreateRectRgnIndirect。
返回值:如果選擇對象不是區域並且函式執行成功,那么返回值是被取代的對象的句柄;如果選擇對象是區域並且函式執行成功,返回如下一值:
SIMPLEREGION:區域由單個矩形組成;
COMPLEXREGION:區域由多個矩形組成;
NULLREGION:區域為空。
如果發生錯誤並且選擇對象不是一個區域,那么返回值為NULL,否則返回HGDI_ERROR。
注釋:該函式返回先前指定類型的選擇對象,一個應用程式在它使用新對象進行繪製完成之後,應該用原始的預設的對象替換新對象。
應用程式不能同時選擇一個點陣圖到多個設備上下文環境中。
ICM:如果被選擇的對象是畫筆或筆,那么就執行顏色管理。
速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本;頭檔案:wingdi.h;庫檔案:gdi32.lib。
示例
HDC hdc=GetDC(hwnd);
HDC memdc=CreateCompatibleDC(hdc);
RECT rc;
BITMAP bmp;
HBITMAP holdbmp,hbmp=LoadBitmap(hInstDVBRes,MAKEINTRESOURCE(IDB_CLOCK));//從資源載入點陣圖
holdbmp=(HBITMAP)SelectObject(memdc,hbmp);//這裡把hbmp的點陣圖選擇到兼容DC memdc,之後這個兼容DC就擁有和
//hbmp同樣大小的繪圖區域,注意超出點陣圖返回的GDI輸出都是無效的.
GetObject(hbmp,sizeof(BITMAP),&bmp);//這裡獲取點陣圖的大小信息,事實上也是兼容DC繪圖輸出的範圍
SetRect(&rc,0,0,bmp.bmWidth,bmp.bmHeight);
DrawText(memdc,"Center Line Text" -1,&rc,DT_VCENTER|DT_SINGLELINE|DT_CENTER);//在兼容DC中間位置輸出字元串
//這樣以來我們就相當於把hbmp這個點陣圖加上了文字標註,我們可以把這個增加了文字標註的點陣圖保存起來.一個簡單的圖像處理基本就OK了.
SelectObject(memdc,holdbmp);//復原兼容DC數據.
DeleteDC(memdc);