Platform SDK: DirectX |
IDirectDraw7::CreatePalette メソッドで使用される PALETTEENTRY 構造体に適用される規則は、IDirectDrawPalette::SetEntries メソッドにも適用される。一般に、PALETTEENTRY 構造体の配列は開発者自身で維持するため、再構築の必要はない。再構築が必要となる場合は、配列を修正した後、パレットの更新時に IDirectDrawPalette::SetEntries を呼び出すこともできる。
多くの場合、非排他 (ウィンドウ) モードであらゆる Windows スタティック エントリを設定するべきではない。このモードで設定してしまうと、予測不可能な結果が生じる。唯一の例外は、256 エントリをリセットする場合である。
通常、パレット アニメーションでは、PALETTEENTRY 配列の小さなサブセットだけを変更する。それらのエントリだけを IDirectDrawPalette::SetEntries に渡すのである。このような小さいサブセットをリセットする場合は、PC_NOCOLLAPSE と PC_RESERVED フラグで記述されたエントリだけをリセットしなくてはならない。他のエントリをアニメーションしようとすると予測不可能な結果が生じる。
次の例では、非排他モードのパレット アニメーションを説明する。
LPDIRECTDRAW lpDD; // 既に初期化されている。 PALETTEENTRY pPaletteEntry[256]; // 既に初期化されている。 LPDIRECTDRAWPALETTE lpDDPal; // 既に初期化されている。 int index; HRESULT ddrval; PALETTEENTRY temp; // いくつかのエントリをアニメーションする。利用可能な最初の 16 の // エントリを循環させる。これによりアニメーションされる。 temp = pPaletteEntry[10]; for (index = 10; index < 25; index ++) { pPaletteEntry[index] = pPaletteEntry[index+1]; } pPaletteEntry[25] = temp; // 値を設定する。パレット エントリ構造体全体へのポインタ // ではなく、変更されたエントリだけへのポインタを渡す。 ddrval = lpDDPal->SetEntries( 0, // フラグはゼロでなくてはならない。 10, // 最初のエントリ。 16, // エントリ数。 & (pPaletteEntry[10])); // データを取得する場所。
DirectDraw7.CreatePalette メソッドで使用される PALETTEENTRY 型に適用される規則は、DirectDrawPalette.SetEntries メソッドにも適用される。一般に、PALETTEENTRY 型の配列は開発者自身で維持するため、再構築の必要はない。再構築が必要となる場合は、配列を修正した後、パレットの更新時に DirectDrawPalette.SetEntries を呼び出すこともできる。
多くの場合、非排他 (ウィンドウ) モードであらゆる Windows スタティック エントリを設定するべきではない。このモードで設定してしまうと、予測不可能な結果が生じる。唯一の例外は、256 エントリをリセットする場合である。
通常、パレット アニメーションでは、PALETTEENTRY 配列の小さなサブセットだけを変更する。それらのエントリだけを DirectDrawPalette.SetEntries に渡すのである。このような小さいサブセットをリセットする場合は、PC_NOCOLLAPSE と PC_RESERVED フラグで記述されたエントリだけをリセットしなければならない。他のエントリをアニメーションしようとすると予測不可能な結果が生じる。