ChoosePixelFormat 函式 (wingdi.h)
ChoosePixelFormat函式會嘗試比對裝置內容所支援的適當像素格式與指定的像素格式規格。
語法
int ChoosePixelFormat(
HDC hdc,
const PIXELFORMATDESCRIPTOR *ppfd
);
參數
hdc
指定函式檢查的裝置內容,以判斷 ppfd所指向像素格式描述元的最佳比對。
ppfd
指定所要求像素格式的 PIXELFORMATDESCRIPTOR 結構的指標。 在此內容中,ppfd指向的PIXELFORMATDESCRIPTOR結構成員,如下所示:
nSize | 指定 PIXELFORMATDESCRIPTOR 資料結構的大小。 將此成員設定為 sizeof(PIXELFORMATDESCRIPTOR) 。 |
nVersion | 指定 PIXELFORMATDESCRIPTOR 資料結構的版本號碼。 將此成員設定為 1。 |
dwFlags | 指定圖元緩衝區屬性的一組位旗標。 您可以使用位 OR 來結合下列位旗標常數。 如果已設定下列任一旗標, ChoosePixelFormat 函式會嘗試比對同時設定該旗標或旗標的像素格式。 否則,ChoosePixelFormat會忽略像素格式中的旗標:PFD_DRAW_TO_WINDOW、PFD_DRAW_TO_BITMAP、PFD_SUPPORT_GDI、PFD_SUPPORT_OPENGL如果已設定下列任一旗標,ChoosePixelFormat會嘗試比對同時設定該旗標或旗標的像素格式。 否則,它會嘗試比對未設定該旗標的像素格式: PFD_DOUBLEBUFFER PFD_STEREO 如果已設定下列旗標,則函式會忽略像素格式的 PFD_DOUBLEBUFFER 旗標: PFD_DOUBLEBUFFER_DONTCARE 如果設定下列旗標,函式會忽略像素格式中的 PFD_STEREO 旗標: PFD_STEREO_DONTCARE |
iPixelType | 指定要考慮之函式的像素格式類型: PFD_TYPE_RGBA、 PFD_TYPE_COLORINDEX |
cColorBits | 零或更大。 |
cRedBits | 未使用。 |
cRedShift | 未使用。 |
cGreenBits | 未使用。 |
cGreenShift | 未使用。 |
cBlueBits | 未使用。 |
cBlueShift | 未使用。 |
cAlphaBits | 零或更大。 |
cAlphaShift | 未使用。 |
cAccumBits | 零或更大。 |
cAccumRedBits | 未使用。 |
cAccumGreenBits | 未使用。 |
cAccumBlueBits | 未使用。 |
cAccumAlphaBits | 未使用。 |
cDepthBits | 零或更大。 |
cStencilBits | 零或更大。 |
cAuxBuffers | 零或更大。 |
iLayerType | 指定下列其中一個圖層類型值: PFD_MAIN_PLANE、 PFD_OVERLAY_PLANE PFD_UNDERLAY_PLANE |
bReserved | 未使用。 |
dwLayerMask | 未使用。 |
dwVisibleMask | 未使用。 |
dwDamageMask | 未使用。 |
傳回值
如果函式成功,則傳回值是像素格式索引, (一個基底) 最符合指定的像素格式描述元。
如果此函式失敗,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。
備註
您必須確定 ChoosePixelFormat 函式所比對的像素格式符合您的需求。 例如,如果您要求具有 24 位 RGB 色彩緩衝區的像素格式,但裝置內容只提供 8 位 RGB 色彩緩衝區,則函式會傳回具有 8 位 RGB 色彩緩衝區的像素格式。
範例
下列程式碼範例示範如何使用 ChoosePixelFormat 來比對指定的像素格式。
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;
iPixelFormat = ChoosePixelFormat(hdc, &pfd);
規格需求
最低支援的用戶端 | Windows 2000 專業版 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | wingdi.h |
程式庫 | Gdi32.lib |
Dll | Gdi32.dll |