<Return[S]><Top>

SetSystemPaletteUse

Declare Function Api_SetSystemPaletteUse& Lib "gdi32" Alias "SetSystemPaletteUse" (ByVal hDC&, ByVal wUsage&)

Declare Function SetSystemPaletteUse Lib "gdi32" Alias "SetSystemPaletteUse" (ByVal hdc As Long, ByVal wUsage As Long) As Long

システムパレットが保持している静的な色の数を、2 個または 20 個に設定する。既定のシステムパレットは、20 個の静的な色を保持している。アプリケーションが論理パレットを実体化した場合でも、静的な色を変更することはできない。

パラメータ

hdc
    デバイスコンテキストのハンドルを指定する。このデバイスコンテキストは、カラーパレットをサポートするデバイスを参照していなければならな

    い。
uUsage
    システムパレットの新しい使い方を指定する。次の値のいずれかを指定する。

    値                                         

意味                                                                                                          

    SYSPAL_NOSTATIC

システムパレットは、2 個の静的な色(黒と白)を保持する。

    SYSPAL_NOSTATIC256

Windows 2000:システムパレットは、静的な色をまったく保持しない。

    SYSPAL_STATIC

 

システムパレットは、アプリケーションが自らの論理パレットを実体化した場合でも変化しない静的な色を保持する。


戻り値
    関数が成功すると、以前の静的な色の状態(SYSPAL_NOSTATIC、SYSPAL_NOSTATIC256、SYSPAL_STATIC のいずれか)が返

    る。関数が失敗すると、SYSPAL_ERROR が返る。
    Windows NT/2000:拡張エラー情報を取得するには、 関数を使う。

解説
    デバイスがパレット操作をサポートしているかどうかを調べるには、 GetDeviceCaps 関数で値 RASTERCAPS を指定する。
    値 SYSPAL_NOSTATIC が設定されている状態で、アプリケーションのウィンドウがフォアグラウンドになった場合、アプリケーションは 関数

    を呼び出して、システムカラーの現在の設定を保存しなければならない。また、 も呼び出して、黒と白だけを使う適切な値を設定しなけれ

    ばならない。アプリケーションがバックグラウンドへ戻るか、終了する際に、元のシステムカラーを復元しなければならない。
    戻り値として SYSPAL_ERROR が返った場合、指定されたデバイスコンテキストが無効であるか、カラーパレットをサポートしていないことを

    示す。
    ウィンドウが最大化されていて、入力フォーカスを備えている場合にのみ、アプリケーションは SetSystemPaletteUse 関数を呼び出すべきで

    ある。
    アプリケーションが 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 メッセージを送信する。