wingdi.h


SetSystemPaletteUse

La función SetSystemPaletteUse permite a una aplicación especificar si la paleta del sistema contiene 2 o 20 colores estáticos. La paleta del sistema por defecto contiene 20 colores estáticos. (Los colores estáticos no pueden se modificados cuando una aplicación activa una paleta lógica).

Sintaxis

UINT SetSystemPaletteUse(
    HDC hdc,     // manipulador de contexto de dispositivo
    UINT uUsage  // banderín de uso de paleta
   );

Parámetros

hdc: identifica el contexto de dispositivo. Este contexto de dispositivo debe referirse a un dispositivo que soporte paletas de colores.

uUsage: especifica el nuevo valor del uso de la paleta de sistema. Este parámetro puede ser uno de los siguientes valores:

Valor Significado
SYSPAL_NOSTATIC La paleta del sistema contiene dos colores estáticos (blanco y negro).
SYSPAL_STATIC La paleta del sistema contiene colores estáticos que no cambiarán cuando una aplicación active la paleta lógica.

Valor de retorno

Si la función tiene éxito, el valor de retorno es el valor previo del uso de la paleta (puede ser tanto SYSPAL_NOSTATIC como SYSPAL_STATIC).

Si la función falla, el valor de retorno es SYSPAL_ERROR. Para obtener mayor información sobre el error, llamar a GetLastError.

Observaciones

Para determinar si un dispositivo soporta operaciones de paleta se puede usar la función GetDeviceCaps, especificando la constante RASTERCAPS.

Cuando la ventana de una aplicación pasa al primer plano y el valor sea SYSPAL_NOSTATIC, la aplicación debe llamar a la función GetSysColor para guardar los colores del sistema actuales. También debe llamar a SetSysColors para asignar valores razonables usando sólo blanco y negro. Cuando la aplicación regrese al fondo o termine, los valores previos de los colores del sistema deben ser restaurados.

Si la función devuelve SYSPAL_ERROR, es porque el contexto de dispositivo especificado es inválido o no soporta paletas de colores.

Sólo se debe llamar a esta función sólo cuando su ventana sea maximizada y tenga el foco de entrada.

Si una aplicación llama a SetSystemPaletteUse con uUsage puesto a SYSPAL_NOSTATIC, Windows continúa asignado por su parte dos entradas en la paleta del sistema para blanco y negro puros, respectivamente.

Después de llamar a esta función con uUsage puesto a SYSPAL_NOSTATIC, la aplicación debe seguir los siguientes pasos:

  1. Activar la paleta lógica.
  2. Llamar a la función GetSysColor para guardar los valores actuales de la paleta del sistema.
  3. Llamar a SetSysColors para asignar los colores del sistema a valores razonables usando blanco y negro. Por ejemplo, ítems adyacentes o superpuestos (como marcos y bordes de ventanas) debes ser negros y blancos, respectivamente.
  4. Enviar el mensaje WM_SYSCOLORCHANGE a otras ventanas de nivel máximo para permitirles que se redibujen con los nuevos colores del sistema.

Cuando la ventana de la aplicación pierde el foco o se cierra, la aplicación debe realizar los siguientes pasos:

  1. Llamar a SetSystemPaletteUse con el parámetro uUsage puesto a SYSPAL_STATIC.
  2. Activar la paleta lógica.
  3. Restaurar los colores del sistema a sus valores previos.
  4. Enviar el mensaje WM_SYSCOLORCHANGE.