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 関数を呼び出すと、ウィンドウのピクセル形式も変更されます。 ウィンドウのピクセル形式を複数回設定すると、ウィンドウ マネージャーとマルチスレッド アプリケーションで重大な問題が発生する可能性があるため、許可されません。 アプリケーションでは、ウィンドウのピクセル形式を 1 回だけ設定できます。 ウィンドウのピクセル形式を設定すると、変更できません。
wglCreateContext 関数を呼び出す前に、デバイス コンテキストでピクセル形式を選択する必要があります。 wglCreateContext 関数は、デバイス コンテキストの選択したピクセル形式でデバイスに描画するためのレンダリング コンテキストを作成します。
OpenGL ウィンドウには、独自のピクセル形式があります。 このため、OpenGL ウィンドウのクライアント領域に対して取得されたデバイス コンテキストのみがウィンドウに描画できます。 その結果、WS_CLIPCHILDRENスタイルとWS_CLIPSIBLINGSスタイルを使用して OpenGL ウィンドウを作成する必要があります。 また、ウィンドウ クラス属性には、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 |