ChoosePixelFormat-Funktion (wingdi.h)
Die ChoosePixelFormat-Funktion versucht, ein geeignetes Pixelformat, das von einem Gerätekontext unterstützt wird, einer bestimmten Pixelformatspezifikation zuzuordnen.
Syntax
int ChoosePixelFormat(
HDC hdc,
const PIXELFORMATDESCRIPTOR *ppfd
);
Parameter
hdc
Gibt den Gerätekontext an, den die Funktion untersucht, um die beste Übereinstimmung für den Pixelformatdeskriptor zu ermitteln, auf den ppfd verweist.
ppfd
Zeiger auf eine PIXELFORMATDESCRIPTOR-Struktur , die das angeforderte Pixelformat angibt. In diesem Kontext werden die Elemente der PIXELFORMATDESCRIPTOR-Struktur , auf die ppfd zeigt, wie folgt verwendet:
nSize | Gibt die Größe der PIXELFORMATDESCRIPTOR-Datenstruktur an. Legen Sie dieses Element auf fest sizeof(PIXELFORMATDESCRIPTOR) . |
nVersion | Gibt die Versionsnummer der PIXELFORMATDESCRIPTOR-Datenstruktur an. Legen Sie diesen Member auf 1 fest. |
dwFlags | Eine Reihe von Bitflags, die Eigenschaften des Pixelpuffers angeben. Sie können die folgenden Bitflagskonstanten mit bitweise-OR kombinieren. Wenn eines der folgenden Flags festgelegt ist, versucht die ChoosePixelFormat-Funktion , Pixelformate abzugleichen, für die auch dieses Flag oder diese Flags festgelegt sind. Andernfalls ignoriert ChoosePixelFormat dieses Flag in den Pixelformaten: PFD_DRAW_TO_WINDOW, PFD_DRAW_TO_BITMAP, PFD_SUPPORT_GDI, PFD_SUPPORT_OPENGL Wenn eines der folgenden Flags festgelegt ist, versucht ChoosePixelFormat, Pixelformate abzugleichen, für die auch dieses Flag oder diese Flags festgelegt sind. Andernfalls versucht sie, Pixelformate ohne diesen Flagsatz abzugleichen: PFD_DOUBLEBUFFER PFD_STEREO Wenn das folgende Flag festgelegt ist, ignoriert die Funktion das PFD_DOUBLEBUFFER-Flag in den Pixelformaten: PFD_DOUBLEBUFFER_DONTCARE Wenn das folgende Flag festgelegt ist, ignoriert die Funktion das PFD_STEREO-Flag in den Pixelformaten: PFD_STEREO_DONTCARE |
iPixelType | Gibt den Typ des Pixelformats für die Zu berücksichtigende Funktion an: PFD_TYPE_RGBA, PFD_TYPE_COLORINDEX |
cColorBits | Null oder höher. |
cRedBits | Wird nicht verwendet. |
cRedShift | Wird nicht verwendet. |
cGreenBits | Wird nicht verwendet. |
cGreenShift | Wird nicht verwendet. |
cBlueBits | Wird nicht verwendet. |
cBlueShift | Wird nicht verwendet. |
cAlphaBits | Null oder höher. |
cAlphaShift | Wird nicht verwendet. |
cAccumBits | Null oder höher. |
cAccumRedBits | Wird nicht verwendet. |
cAccumGreenBits | Wird nicht verwendet. |
cAccumBlueBits | Wird nicht verwendet. |
cAccumAlphaBits | Wird nicht verwendet. |
cDepthBits | Null oder höher. |
cStencilBits | Null oder höher. |
cAuxBuffers | Null oder höher. |
iLayerType | Gibt einen der folgenden Ebenentypwerte an: PFD_MAIN_PLANE, PFD_OVERLAY_PLANE, PFD_UNDERLAY_PLANE |
bReserved | Wird nicht verwendet. |
dwLayerMask | Wird nicht verwendet. |
dwVisibleMask | Wird nicht verwendet. |
dwDamageMask | Wird nicht verwendet. |
Rückgabewert
Wenn die Funktion erfolgreich ist, ist der Rückgabewert ein Pixelformatindex (einsbasiert), der dem angegebenen Pixelformatdeskriptor am nächsten entspricht.
Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.
Hinweise
Sie müssen sicherstellen, dass das Pixelformat, das von der ChoosePixelFormat-Funktion übereinstimmt, Ihre Anforderungen erfüllt. Wenn Sie beispielsweise ein Pixelformat mit einem 24-Bit-RGB-Farbpuffer anfordern, der Gerätekontext jedoch nur 8-Bit-RGB-Farbpuffer bietet, gibt die Funktion ein Pixelformat mit einem 8-Bit-RGB-Farbpuffer zurück.
Beispiele
Das folgende Codebeispiel zeigt, wie Sie ChoosePixelFormat verwenden, um einem angegebenen Pixelformat zu entsprechen.
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);
Anforderungen
Unterstützte Mindestversion (Client) | Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | wingdi.h |
Bibliothek | Gdi32.lib |
DLL | Gdi32.dll |