SetPixelFormat 函数 (wingdi.h)

SetPixelFormat 函数将指定设备上下文的像素格式设置为 iPixelFormat 索引指定的格式。

语法

BOOL SetPixelFormat(
  HDC                         hdc,
  int                         format,
  const PIXELFORMATDESCRIPTOR *ppfd
);

参数

hdc

指定函数尝试设置其像素格式的设备上下文。

format

标识要设置的像素格式的索引。 设备上下文支持的各种像素格式由基于 1 的索引标识。

ppfd

指向包含逻辑像素格式规范的 PIXELFORMATDESCRIPTOR 结构的指针。 系统的图元文件组件使用此结构来记录逻辑像素格式规范。 结构对 SetPixelFormat 函数的行为没有其他影响。

返回值

如果函数成功,则返回值为 TRUE

如果函数失败,则返回值为 FALSE。 要获得更多的错误信息,请调用 GetLastError。

注解

如果 hdc 引用窗口,则调用 SetPixelFormat 函数也会更改窗口的像素格式。 多次设置窗口的像素格式可能会导致窗口管理器和多线程应用程序出现重大复杂问题,因此不允许这样做。 应用程序只能设置一次窗口的像素格式。 设置窗口的像素格式后,便无法更改。

在调用 wglCreateContext 函数之前,应在设备上下文中选择像素格式。 wglCreateContext 函数创建一个呈现上下文,用于以设备上下文的所选像素格式在设备上绘图。

OpenGL 窗口有自己的像素格式。 因此,仅允许为 OpenGL 窗口的工作区检索到的设备上下文绘制到窗口中。 因此,应使用WS_CLIPCHILDREN和WS_CLIPSIBLINGS样式创建 OpenGL 窗口。 此外,window 类属性不应包含CS_PARENTDC样式。

示例

下面的代码示例演示 SetPixelFormat 用法。

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; 
 
// get the best available match of pixel format for the device context   
iPixelFormat = ChoosePixelFormat(hdc, &pfd); 
 
// make that the pixel format of the device context  
SetPixelFormat(hdc, iPixelFormat, &pfd);

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 wingdi.h
Library Gdi32.lib
DLL Gdi32.dll

另请参阅

ChoosePixelFormat

DescribePixelFormat

GetPixelFormat

Windows 上的 OpenGL

Windows Functions