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 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 |