Compartilhar via


Função ChoosePixelFormat (wingdi.h)

A função ChoosePixelFormat tenta corresponder a um formato de pixel apropriado compatível com um contexto de dispositivo com uma especificação de formato de pixel específica.

Sintaxe

int ChoosePixelFormat(
  HDC                         hdc,
  const PIXELFORMATDESCRIPTOR *ppfd
);

Parâmetros

hdc

Especifica o contexto do dispositivo que a função examina para determinar a melhor correspondência para o descritor de formato de pixel apontado pelo ppfd.

ppfd

Ponteiro para uma estrutura PIXELFORMATDESCRIPTOR que especifica o formato de pixel solicitado. Nesse contexto, os membros da estrutura PIXELFORMATDESCRIPTOR para a qual ppfd aponta são usados da seguinte maneira:

nSize Especifica o tamanho da estrutura de dados PIXELFORMATDESCRIPTOR . Defina esse membro como sizeof(PIXELFORMATDESCRIPTOR).
nVersion Especifica o número de versão da estrutura de dados PIXELFORMATDESCRIPTOR . Defina esse membro como 1.
dwFlags Um conjunto de sinalizadores de bits que especificam propriedades do buffer de pixel. Você pode combinar as seguintes constantes de sinalizador de bit usando OR bit a bit. Se qualquer um dos sinalizadores a seguir estiver definido, a função ChoosePixelFormat tentará corresponder aos formatos de pixel que também têm esse sinalizador ou sinalizador definido. Caso contrário, ChoosePixelFormat ignorará esse sinalizador nos formatos de pixel: PFD_DRAW_TO_WINDOW, PFD_DRAW_TO_BITMAP, PFD_SUPPORT_GDIPFD_SUPPORT_OPENGL Se qualquer um dos sinalizadores a seguir estiver definido, ChoosePixelFormat tentará corresponder aos formatos de pixel que também têm esse sinalizador ou sinalizador definido. Caso contrário, ele tentará corresponder aos formatos de pixel sem esse sinalizador definido: PFD_DOUBLEBUFFER PFD_STEREO Se o seguinte sinalizador estiver definido, a função ignorará o sinalizador PFD_DOUBLEBUFFER nos formatos de pixel: PFD_DOUBLEBUFFER_DONTCARE Se o seguinte sinalizador estiver definido, a função ignorará o sinalizador PFD_STEREO nos formatos de pixel: PFD_STEREO_DONTCARE
iPixelType Especifica o tipo de formato de pixel para a função a ser considerada: PFD_TYPE_RGBA, PFD_TYPE_COLORINDEX
cColorBits Zero ou maior.
cRedBits Não usado.
cRedShift Não usado.
cGreenBits Não usado.
cGreenShift Não usado.
cBlueBits Não usado.
cBlueShift Não usado.
cAlphaBits Zero ou maior.
cAlphaShift Não usado.
cAccumBits Zero ou maior.
cAccumRedBits Não usado.
cAccumGreenBits Não usado.
cAccumBlueBits Não usado.
cAccumAlphaBits Não usado.
cDepthBits Zero ou maior.
cStencilBits Zero ou maior.
cAuxBuffers Zero ou maior.
iLayerType Especifica um dos seguintes valores de tipo de camada: PFD_MAIN_PLANE, PFD_OVERLAY_PLANEPFD_UNDERLAY_PLANE
bReserved Não usado.
dwLayerMask Não usado.
dwVisibleMask Não usado.
dwDamageMask Não usado.
 

Valor retornado

Se a função for bem-sucedida, o valor retornado será um índice de formato de pixel (baseado em um) que é a correspondência mais próxima do descritor de formato de pixel fornecido.

Se a função falhar, o valor retornado será zero. Para obter informações de erro estendidas, chame GetLastError.

Comentários

Você deve garantir que o formato de pixel correspondido pela função ChoosePixelFormat atenda aos seus requisitos. Por exemplo, se você solicitar um formato de pixel com um buffer de cores RGB de 24 bits, mas o contexto do dispositivo oferecer apenas buffers de cores RGB de 8 bits, a função retornará um formato de pixel com um buffer de cores RGB de 8 bits.

Exemplos

O exemplo de código a seguir mostra como usar ChoosePixelFormat para corresponder a um formato de pixel especificado.

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);

Requisitos

   
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho wingdi.h
Biblioteca Gdi32.lib
DLL Gdi32.dll

Confira também

DescribePixelFormat

GetPixelFormat

OpenGL no Windows

SetPixelFormat

Funções do Windows