Поделиться через


Функция 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

См. также раздел

DescribePixelFormat

GetPixelFormat

OpenGL в Windows

SetPixelFormat

Функции Windows