Fonction ChoosePixelFormat (wingdi.h)
La fonction ChoosePixelFormat tente de faire correspondre un format de pixel approprié pris en charge par un contexte d’appareil à une spécification de format de pixel donnée.
Syntaxe
int ChoosePixelFormat(
HDC hdc,
const PIXELFORMATDESCRIPTOR *ppfd
);
Paramètres
hdc
Spécifie le contexte d’appareil que la fonction examine pour déterminer la meilleure correspondance pour le descripteur de format de pixel pointé par ppfd.
ppfd
Pointeur vers une structure PIXELFORMATDESCRIPTOR qui spécifie le format de pixel demandé. Dans ce contexte, les membres de la structure PIXELFORMATDESCRIPTOR que ppfd pointe sont utilisés comme suit :
nSize | Spécifie la taille de la structure de données PIXELFORMATDESCRIPTOR . Définissez ce membre sur sizeof(PIXELFORMATDESCRIPTOR) . |
nVersion | Spécifie le numéro de version de la structure de données PIXELFORMATDESCRIPTOR . Définissez ce membre sur 1. |
dwFlags | Ensemble d’indicateurs de bits qui spécifient les propriétés de la mémoire tampon de pixels. Vous pouvez combiner les constantes d’indicateur de bits suivantes à l’aide du bit-OR. Si l’un des indicateurs suivants est défini, la fonction ChoosePixelFormat tente de faire correspondre les formats de pixels qui ont également cet indicateur ou ces indicateurs définis. Sinon, ChoosePixelFormat ignore cet indicateur dans les formats de pixels : PFD_DRAW_TO_WINDOW, PFD_DRAW_TO_BITMAP, PFD_SUPPORT_GDI, PFD_SUPPORT_OPENGL Si l’un des indicateurs suivants est défini, ChoosePixelFormat tente de faire correspondre les formats de pixels dont l’indicateur ou les indicateurs sont également définis. Sinon, elle tente de faire correspondre les formats de pixels sans ce jeu d’indicateurs : PFD_DOUBLEBUFFER PFD_STEREO Si l’indicateur suivant est défini, la fonction ignore l’indicateur PFD_DOUBLEBUFFER dans les formats de pixels : PFD_DOUBLEBUFFER_DONTCARE Si l’indicateur suivant est défini, la fonction ignore l’indicateur PFD_STEREO dans les formats de pixels : PFD_STEREO_DONTCARE |
iPixelType | Spécifie le type de format de pixels pour la fonction à prendre en compte : PFD_TYPE_RGBA, PFD_TYPE_COLORINDEX |
cColorBits | Zéro ou supérieur. |
cRedBits | Non utilisé. |
cRedShift | Non utilisé. |
cGreenBits | Non utilisé. |
cGreenShift | Non utilisé. |
cBlueBits | Non utilisé. |
cBlueShift | Non utilisé. |
cAlphaBits | Zéro ou supérieur. |
cAlphaShift | Non utilisé. |
cAccumBits | Zéro ou supérieur. |
cAccumRedBits | Non utilisé. |
cAccumGreenBits | Non utilisé. |
cAccumBlueBits | Non utilisé. |
cAccumAlphaBits | Non utilisé. |
cDepthBits | Zéro ou supérieur. |
cStencilBits | Zéro ou supérieur. |
cAuxBuffers | Zéro ou supérieur. |
iLayerType | Spécifie l’une des valeurs de type de couche suivantes : PFD_MAIN_PLANE, PFD_OVERLAY_PLANE, PFD_UNDERLAY_PLANE |
bReserved | Non utilisé. |
dwLayerMask | Non utilisé. |
dwVisibleMask | Non utilisé. |
dwDamageMask | Non utilisé. |
Valeur retournée
Si la fonction réussit, la valeur de retour est un index de format de pixel (base un) qui correspond le plus au descripteur de format de pixel donné.
Si la fonction échoue, la valeur de retour est égale à zéro. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.
Remarques
Vous devez vous assurer que le format de pixel correspondant à la fonction ChoosePixelFormat répond à vos besoins. Par exemple, si vous demandez un format de pixel avec une mémoire tampon de couleur RVB 24 bits, mais que le contexte de l’appareil offre uniquement des tampons de couleurs RVB 8 bits, la fonction retourne un format de pixel avec une mémoire tampon de couleurs RVB 8 bits.
Exemples
L’exemple de code suivant montre comment utiliser ChoosePixelFormat pour correspondre à un format de pixel spécifié.
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);
Configuration requise
Client minimal pris en charge | Windows 2000 Professionnel [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows 2000 Server [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | wingdi.h |
Bibliothèque | Gdi32.lib |
DLL | Gdi32.dll |