次の方法で共有


SetSystemPaletteUse 関数 (wingdi.h)

SetSystemPaletteUse 関数を使用すると、システム パレットに 2 色または 20 色の静的色を含めるかどうかをアプリケーションで指定できます。 既定のシステム パレットには、20 個の静的な色が含まれています。 (アプリケーションが論理パレットを認識する場合、静的な色は変更できません)。

構文

UINT SetSystemPaletteUse(
  [in] HDC  hdc,
  [in] UINT use
);

パラメーター

[in] hdc

デバイス コンテキストへのハンドル。 このデバイス コンテキストは、カラー パレットをサポートするデバイスを参照する必要があります。

[in] use

システム パレットの新しい使用。 このパラメーターには、次の値のいずれかを指定できます。

説明
SYSPAL_NOSTATIC
システム パレットには、2 つの静的な色 (黒と白) が含まれています。
SYSPAL_NOSTATIC256
システム パレットには静的な色が含まれています。
SYSPAL_STATIC
システム パレットには、アプリケーションが論理パレットを認識したときに変更されない静的な色が含まれています。

戻り値

関数が成功した場合、戻り値は前のシステム パレットになります。 SYSPAL_NOSTATIC、SYSPAL_NOSTATIC256、またはSYSPAL_STATICのいずれかです。

関数が失敗した場合、戻り値はSYSPAL_ERROR。

解説

アプリケーションは、 GetDeviceCaps 関数を呼び出し、RASTERCAPS 定数を指定することで、デバイスがパレット操作をサポートしているかどうかを判断できます。

アプリケーション ウィンドウがフォアグラウンドに移動し、SYSPAL_NOSTATIC値が設定されている場合、アプリケーションは GetSysColor 関数を呼び出して、現在のシステムカラー設定を保存する必要があります。 また、 SetSysColors を呼び出して、白黒のみを使用して適切な値を設定する必要があります。 アプリケーションがバックグラウンドに戻る場合、または終了する場合は、以前のシステムカラーを復元する必要があります。

関数がSYSPAL_ERRORを返す場合、指定したデバイス コンテキストが無効であるか、カラー パレットをサポートしていません。

アプリケーションでは、ウィンドウが最大化され、入力フォーカスがある場合にのみ、この関数を呼び出す必要があります。

アプリケーションで uUsage を SYSPAL_NOSTATIC に設定して SetSystemPaletteUse を呼び出した場合、システムは引き続き、純粋な白と純粋な黒の 2 つのエントリをシステム パレットに確保します。

uUsage を SYSPAL_NOSTATIC に設定してこの関数を呼び出した後、アプリケーションは次の手順を実行する必要があります。

  1. 論理パレットを実現します。
  2. GetSysColor 関数を呼び出して、現在のシステム カラー設定を保存します。
  3. SetSysColors 関数を呼び出して、黒と白を使用してシステムの色を適切な値に設定します。 たとえば、隣接する項目や重なり合う項目 (ウィンドウ フレームや罫線など) は、それぞれ白黒に設定する必要があります。
  4. WM_SYSCOLORCHANGE メッセージを他の最上位ウィンドウに送信して、新しいシステム の色で再描画できるようにします。
アプリケーションのウィンドウがフォーカスを失うか閉じると、アプリケーションは次の手順を実行する必要があります。
  1. uUsage パラメーターを SYSPAL_STATIC に設定して SetSystemPaletteUse を呼び出します。
  2. 論理パレットを実現します。
  3. システムの色を以前の値に復元します。
  4. WM_SYSCOLORCHANGE メッセージを送信します。

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー wingdi.h (Windows.h を含む)
Library Gdi32.lib
[DLL] Gdi32.dll

関連項目

カラー関数

色の概要

GetDeviceCaps

GetSysColor

GetSystemPaletteUse

SetSysColors