Función ChoosePixelFormat (wingdi.h)
La función ChoosePixelFormat intenta coincidir con un formato de píxel adecuado admitido por un contexto de dispositivo con una especificación de formato de píxel determinada.
Sintaxis
int ChoosePixelFormat(
HDC hdc,
const PIXELFORMATDESCRIPTOR *ppfd
);
Parámetros
hdc
Especifica el contexto del dispositivo al que examina la función para determinar la mejor coincidencia para el descriptor de formato de píxel al que apunta ppfd.
ppfd
Puntero a una estructura PIXELFORMATDESCRIPTOR que especifica el formato de píxel solicitado. En este contexto, los miembros de la estructura PIXELFORMATDESCRIPTOR a los que apunta ppfd se usan de la siguiente manera:
nSize | Especifica el tamaño de la estructura de datos PIXELFORMATDESCRIPTOR . Establezca este miembro en sizeof(PIXELFORMATDESCRIPTOR) . |
nVersion | Especifica el número de versión de la estructura de datos PIXELFORMATDESCRIPTOR . Establezca este miembro en 1. |
dwFlags | Conjunto de marcas de bits que especifican las propiedades del búfer de píxeles. Puede combinar las siguientes constantes de marca de bits mediante OR bit a bit. Si se establece alguna de las marcas siguientes, la función ChoosePixelFormat intenta coincidir con los formatos de píxeles que también tienen esa marca o marcas establecidas. De lo contrario, ChoosePixelFormat omite esa marca en formatos de píxeles: PFD_DRAW_TO_WINDOW, PFD_DRAW_TO_BITMAP, PFD_SUPPORT_GDI, PFD_SUPPORT_OPENGL Si se establece alguna de las marcas siguientes, ChoosePixelFormat intenta coincidir con los formatos de píxeles que también tienen esa marca o marcas establecidas. De lo contrario, intenta buscar coincidencias con formatos de píxel sin ese conjunto de marcas: PFD_DOUBLEBUFFER PFD_STEREO Si se establece la marca siguiente, la función omite la marca de PFD_DOUBLEBUFFER en los formatos de píxeles: PFD_DOUBLEBUFFER_DONTCARE Si se establece la marca siguiente, la función omite la marca PFD_STEREO en los formatos de píxel: PFD_STEREO_DONTCARE |
iPixelType | Especifica el tipo de formato de píxel para la función que se debe tener en cuenta: PFD_TYPE_RGBA, PFD_TYPE_COLORINDEX |
cColorBits | Cero o mayor. |
cRedBits | No se usa. |
cRedShift | No se usa. |
cGreenBits | No se usa. |
cGreenShift | No se usa. |
cBlueBits | No se usa. |
cBlueShift | No se usa. |
cAlphaBits | Cero o mayor. |
cAlphaShift | No se usa. |
cAccumBits | Cero o mayor. |
cAccumRedBits | No se usa. |
cAccumGreenBits | No se usa. |
cAccumBlueBits | No se usa. |
cAccumAlphaBits | No se usa. |
cDepthBits | Cero o mayor. |
cStencilBits | Cero o mayor. |
cAuxBuffers | Cero o mayor. |
iLayerType | Especifica uno de los siguientes valores de tipo de capa: PFD_MAIN_PLANE, PFD_OVERLAY_PLANE, PFD_UNDERLAY_PLANE |
bReserved | No se usa. |
dwLayerMask | No se usa. |
dwVisibleMask | No se usa. |
dwDamageMask | No se usa. |
Valor devuelto
Si la función se ejecuta correctamente, el valor devuelto es un índice de formato de píxel (basado en uno) que es la coincidencia más cercana al descriptor de formato de píxel determinado.
Si la función no se realiza correctamente, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError.
Comentarios
Debe asegurarse de que el formato de píxel coincidente con la función ChoosePixelFormat cumple sus requisitos. Por ejemplo, si solicita un formato de píxel con un búfer de color RGB de 24 bits, pero el contexto del dispositivo solo ofrece búferes de color RGB de 8 bits, la función devuelve un formato de píxel con un búfer de color RGB de 8 bits.
Ejemplos
En el ejemplo de código siguiente se muestra cómo usar ChoosePixelFormat para que coincida con un formato de píxel 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 compatible | Windows 2000 Professional [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows 2000 Server [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | wingdi.h |
Library | Gdi32.lib |
Archivo DLL | Gdi32.dll |