介紹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,否則返回GDI_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);
參考:新編Windows API參考大全