Fonction SetICMMode (wingdi.h)

La fonction SetICMMode permet d’activer, de désactiver ou d’interroger la gestion des couleurs d’image sur un contexte d’appareil (DC) donné.

Syntaxe

int SetICMMode(
  HDC hdc,
  int mode
);

Paramètres

hdc

Identifie le handle dans le contexte de l’appareil.

mode

Active et désactive la gestion des couleurs des images. Ce paramètre peut prendre l’une des valeurs constantes suivantes.

 

Valeur Signification
ICM_ON
Active la gestion des couleurs. Désactive la correction des couleurs de style ancien des demi-tons.
ICM_OFF
Désactive la gestion des couleurs. Active l’ancienne correction des couleurs des demi-tons.
ICM_QUERY
Interroge l’état actuel de la gestion des couleurs.
ICM_DONE_OUTSIDEDC
Désactive la gestion des couleurs à l’intérieur du contrôleur de domaine. Sous Windows 2000, désactive également la correction des couleurs de style ancien des demi-tons. Non pris en charge sous Windows 95.

Valeur retournée

Si cette fonction réussit, la valeur de retour est une valeur différente de zéro.

Si cette fonction échoue, la valeur de retour est zéro.

Si ICM_QUERY est spécifié et que la fonction réussit, la valeur différente de zéro renvoyée est ICM_ON ou ICM_OFF pour indiquer le mode actuel.

Remarques

Si le système ne trouve pas de profil de couleur ICC correspondant à l’état de l’appareil, SetICMMode échoue et retourne zéro.

Une fois que WCS est activé pour un contexte d’appareil (DC), les couleurs passées dans le contrôleur de domaine à l’aide de la plupart des fonctions de l’API Win32 sont mises en correspondance de couleur. Les principales exceptions sont BitBlt et StretchBlt. L’hypothèse est que lors d’un transfert de bloc de bits (blit) d’un contrôleur de domaine à l’autre, les deux contrôleurs de domaine sont déjà compatibles et ne nécessitent aucune correction de couleur. Si ce n’est pas le cas, une correction de couleur peut être effectuée. Plus précisément, si une bitmap indépendante de l’appareil (DIB) est utilisée comme source pour un blit et que la fente est effectuée dans un contrôleur de domaine sur lequel WCS est activé, la correspondance des couleurs est effectuée. Si ce n’est pas ce que vous souhaitez, désactivez WCS pour le contrôleur de domaine de destination en appelant SetICMMode avant d’appeler BitBlt ou StretchBlt.

Si la fonction CreateCompatibleDC est utilisée pour créer une bitmap dans un contrôleur de domaine, il est possible que la couleur de la bitmap soit mise en correspondance deux fois, une fois lors de sa création et une fois lorsqu’une fente est effectuée. La raison en est qu’une bitmap dans un contrôleur de domaine créé par la fonction CreateCompatibleDC acquiert le pinceau, les stylets et la palette actuels du contrôleur de domaine source. Toutefois, WCS sera désactivé par défaut pour le nouveau contrôleur de domaine. Si WCS est activé ultérieurement pour le nouveau contrôleur de domaine à l’aide de la fonction SetICMMode , une correction de couleur est effectuée. Pour empêcher les corrections de double couleur à l’aide de la fonction CreateCompatibleDC , utilisez la fonction SetICMMode pour désactiver WCS pour le contrôleur de domaine source avant l’appel de la fonction CreateCompatibleDC .

Lorsqu’un contrôleur de domaine compatible est créé à partir du contrôleur de domaine d’une imprimante (consultez CreateCompatibleDC ), la correspondance des couleurs par défaut est toujours effectuée si elle est activée pour le contrôleur de domaine de l’imprimante. Le profil de couleur par défaut de l’imprimante est utilisé lorsqu’une fente est effectuée dans le contrôleur de domaine de l’imprimante à l’aide de SetDIBitsToDevice ou StretchDIBits. Si ce n’est pas ce que vous voulez, désactivez WCS pour le contrôleur de domaine de l’imprimante en appelant SetICMMode avant d’appeler SetDIBitsToDevice ou StretchDIBits.

En outre, lors de l’impression sur le contrôleur de domaine d’une imprimante avec WCS activé, la fonction SetICMMode doit être appelée après chaque appel à la fonction StartPage pour réactiver WCS. La fonction StartPage appelle les fonctions RestoreDC et SaveDC , ce qui entraîne la désactivation de WCS pour le contrôleur de domaine de l’imprimante.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête wingdi.h
Bibliothèque Gdi32.lib
DLL Gdi32.dll

Voir aussi