SetPixelFormat 函式 (wingdi.h)
SetPixelFormat 函式會將指定裝置內容的像素格式設定為 iPixelFormat 索引所指定的格式。
語法
BOOL SetPixelFormat(
HDC hdc,
int format,
const PIXELFORMATDESCRIPTOR *ppfd
);
參數
hdc
指定裝置內容,其圖元格式為函式嘗試設定。
format
識別要設定之像素格式的索引。 裝置內容支持的各種圖元格式是由單一式索引所識別。
ppfd
包含邏輯圖元格式規格的 PIXELFORMATDESCRIPTOR 結構的指標。 系統的元檔元件會使用此結構來記錄邏輯圖元格式規格。 結構對 SetPixelFormat 函式的行為沒有任何其他影響。
傳回值
如果函式成功,則傳回值為 TRUE。
如果函式失敗,則傳回值為 FALSE。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。
備註
如果 hdc 參考視窗,則呼叫 SetPixelFormat 函式也會變更視窗的圖元格式。 設定視窗的圖元格式超過一次可能會導致視窗管理員和多線程應用程式的嚴重複雜問題,因此不允許。 應用程式只能設定一次視窗的像素格式。 設定視窗的圖元格式之後,就無法變更。
您應該先在裝置內容中選取圖元格式,再呼叫 wglCreateContext 函式。 wglCreateContext 函式會建立轉譯內容,以裝置內容的選取圖元格式在裝置上繪製。
OpenGL 視窗有自己的像素格式。 因此,只允許針對 OpenGL 視窗的工作區擷取的裝置內容繪製到視窗中。 因此,應該使用 WS_CLIPCHILDREN 和 WS_CLIPSIBLINGS 樣式來建立OpenGL視窗。 此外,視窗類別屬性不應該包含CS_PARENTDC樣式。
範例
下列程式代碼範例顯示 SetPixelFormat 使用方式。
PIXELFORMATDESCRIPTOR pfd = {
sizeof(PIXELFORMATDESCRIPTOR), // size of this pfd
1, // version number
PFD_DRAW_TO_WINDOW | // support window
PFD_SUPPORT_OPENGL | // support OpenGL
PFD_DOUBLEBUFFER, // double buffered
PFD_TYPE_RGBA, // RGBA type
24, // 24-bit color depth
0, 0, 0, 0, 0, 0, // color bits ignored
0, // no alpha buffer
0, // shift bit ignored
0, // no accumulation buffer
0, 0, 0, 0, // accum bits ignored
32, // 32-bit z-buffer
0, // no stencil buffer
0, // no auxiliary buffer
PFD_MAIN_PLANE, // main layer
0, // reserved
0, 0, 0 // layer masks ignored
};
HDC hdc;
int iPixelFormat;
// get the best available match of pixel format for the device context
iPixelFormat = ChoosePixelFormat(hdc, &pfd);
// make that the pixel format of the device context
SetPixelFormat(hdc, iPixelFormat, &pfd);
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 專業版 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | wingdi.h |
程式庫 | Gdi32.lib |
Dll | Gdi32.dll |