共用方式為


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_WINDOWPFD_DRAW_TO_BITMAPPFD_SUPPORT_GDI、PFD_SUPPORT_OPENGL如果已設定下列任一旗標ChoosePixelFormat會嘗試比對同時設定該旗標或旗標的像素格式。 否則,它會嘗試比對未設定該旗標的像素格式: PFD_DOUBLEBUFFER PFD_STEREO 如果已設定下列旗標,則函式會忽略像素格式的 PFD_DOUBLEBUFFER 旗標: PFD_DOUBLEBUFFER_DONTCARE 如果設定下列旗標,函式會忽略像素格式中的 PFD_STEREO 旗標: PFD_STEREO_DONTCARE
iPixelType 指定要考慮之函式的像素格式類型: PFD_TYPE_RGBAPFD_TYPE_COLORINDEX
cColorBits 零或更大。
cRedBits 未使用。
cRedShift 未使用。
cGreenBits 未使用。
cGreenShift 未使用。
cBlueBits 未使用。
cBlueShift 未使用。
cAlphaBits 零或更大。
cAlphaShift 未使用。
cAccumBits 零或更大。
cAccumRedBits 未使用。
cAccumGreenBits 未使用。
cAccumBlueBits 未使用。
cAccumAlphaBits 未使用。
cDepthBits 零或更大。
cStencilBits 零或更大。
cAuxBuffers 零或更大。
iLayerType 指定下列其中一個圖層類型值: PFD_MAIN_PLANEPFD_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

另請參閱

DescribePixelFormat

GetPixelFormat

Windows 上的 OpenGL

SetPixelFormat

Windows 函式