Функция ChoosePixelFormat (wingdi.h)
Функция ChoosePixelFormat пытается сопоставить соответствующий формат пикселей, поддерживаемый контекстом устройства, с заданной спецификацией формата пикселей.
Синтаксис
int ChoosePixelFormat(
HDC hdc,
const PIXELFORMATDESCRIPTOR *ppfd
);
Параметры
hdc
Указывает контекст устройства, который функция проверяет, чтобы определить наилучшее соответствие дескриптора формата пикселей, на который указывает ppfd.
ppfd
Указатель на структуру PIXELFORMATDESCRIPTOR , которая задает запрошенный формат пикселей. В этом контексте члены структуры PIXELFORMATDESCRIPTOR , на которую указывает ppfd , используются следующим образом:
Nsize | Задает размер структуры данных PIXELFORMATDESCRIPTOR . Присвойте этому члену значение sizeof(PIXELFORMATDESCRIPTOR) . |
nVersion | Указывает номер версии структуры данных PIXELFORMATDESCRIPTOR . Задайте для этого элемента значение 1. |
dwFlags | Набор битовых флагов, указывающих свойства буфера пикселей. Следующие константы битового флага можно объединить с помощью побитового ИЛИ. Если задан любой из следующих флагов, функция ChoosePixelFormat пытается сопоставить форматы пикселей, для которых также заданы флаги или флаги. В противном случае Функция ChoosePixelFormat игнорирует этот флаг в пиксельных форматах: PFD_DRAW_TO_WINDOW, PFD_DRAW_TO_BITMAP, PFD_SUPPORT_GDIPFD_SUPPORT_OPENGL Если задан какой-либо из следующих флагов, Функция ChoosePixelFormat пытается сопоставить форматы пикселей, для которых также заданы флаги или флаги. В противном случае она пытается сопоставить форматы пикселей без этого флага: PFD_DOUBLEBUFFER PFD_STEREO Если установлен следующий флаг, функция игнорирует флаг PFD_DOUBLEBUFFER в форматах пикселей: PFD_DOUBLEBUFFER_DONTCARE Если установлен следующий флаг, функция игнорирует флаг PFD_STEREO в пиксельных форматах: PFD_STEREO_DONTCARE |
iPixelType | Указывает тип формата пикселей для функции: PFD_TYPE_RGBA, PFD_TYPE_COLORINDEX |
cColorBits | Ноль или больше. |
cRedBits | Не используется. |
cRedShift | Не используется. |
cGreenBits | Не используется. |
cGreenShift | Не используется. |
cBlueBits | Не используется. |
cBlueShift | Не используется. |
cAlphaBits | Ноль или больше. |
cAlphaShift | Не используется. |
cAccumBits | Ноль или больше. |
cAccumRedBits | Не используется. |
cAccumGreenBits | Не используется. |
cAccumBlueBits | Не используется. |
cAccumAlphaBits | Не используется. |
cDepthBits | Ноль или больше. |
cStencilBits | Ноль или больше. |
cAuxBuffers | Ноль или больше. |
iLayerType | Задает одно из следующих значений типа слоя: PFD_MAIN_PLANE, PFD_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 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | wingdi.h |
Библиотека | Gdi32.lib |
DLL | Gdi32.dll |