Funzione SetICMMode (wingdi.h)

La funzione SetICMMode causa l'abilitazione, la disabilitazione o la query di Gestione colori immagine in un determinato contesto del dispositivo (DC).

Sintassi

int SetICMMode(
  HDC hdc,
  int mode
);

Parametri

hdc

Identifica handle nel contesto del dispositivo.

mode

Attiva e disattiva la gestione dei colori delle immagini. Questo parametro può accettare uno dei valori costanti seguenti.

 

Valore Significato
ICM_ON
Attiva la gestione dei colori. Disattiva la correzione del colore vecchio stile di metàtone.
ICM_OFF
Disattiva la gestione dei colori. Attiva la correzione del colore vecchio stile di mezzotoni.
ICM_QUERY
Esegue query sullo stato corrente della gestione dei colori.
ICM_DONE_OUTSIDEDC
Disattiva la gestione dei colori all'interno del controller di dominio. In Windows 2000, disattiva anche la correzione dei colori in stile precedente di metàtone. Non supportato in Windows 95.

Valore restituito

Se questa funzione ha esito positivo, il valore restituito è un valore diverso da zero.

Se questa funzione ha esito negativo, il valore restituito è zero.

Se viene specificato ICM_QUERY e la funzione ha esito positivo, il valore non zero restituito viene ICM_ON o ICM_OFF per indicare la modalità corrente.

Commenti

Se il sistema non riesce a trovare un profilo di colore ICC per corrispondere allo stato del dispositivo, SetICMMode ha esito negativo e restituisce zero.

Dopo aver abilitato WCS per un contesto di dispositivo (DC), i colori passati al controller di dominio usando la maggior parte delle funzioni API Win32 sono corrispondenti al colore. Le eccezioni principali sono BitBlt e StretchBlt. Il presupposto è che quando si esegue un trasferimento a blocchi di bit (blit) da un controller di dominio a un altro, i due controller di dominio sono già compatibili e non hanno bisogno di correzione dei colori. Se questo non è il caso, la correzione del colore può essere eseguita. In particolare, se viene usata una bitmap indipendente dal dispositivo (DIB) come origine per un blit e la barra blit viene eseguita in un controller di dominio abilitato, verrà eseguita la corrispondenza dei colori. Se non si vuole, disattivare WCS per il controller di dominio di destinazione chiamando SetICMMode prima di chiamare BitBlt o StretchBlt.

Se la funzione CreateCompatibleDC viene usata per creare una bitmap in un controller di dominio, è possibile che la bitmap corrisponda due volte, una volta quando viene creata e una volta quando viene eseguita una blit. Il motivo è che una bitmap in un controller di dominio creato dalla funzione CreateCompatibleDC acquisisce il pennello, la penna e la tavolozza correnti del controller di dominio di origine. Tuttavia, WCS verrà disabilitato per impostazione predefinita per il nuovo controller di dominio. Se WCS è abilitato successivamente per il nuovo controller di dominio usando la funzione SetICMMode , verrà eseguita una correzione del colore. Per evitare la doppia correzione dei colori tramite l'uso della funzione CreateCompatibleDC , usare la funzione SetICMMode per disattivare WCS per il controller di dominio di origine prima che venga chiamata la funzione CreateCompatibleDC .

Quando un controller di dominio compatibile viene creato dal controller di dominio di una stampante (vedere CreateCompatibleDC ), il valore predefinito è per la corrispondenza dei colori da eseguire sempre se è abilitato per il controller di dominio della stampante. Il profilo di colore predefinito per la stampante viene usato quando viene eseguito un blit nel controller di dominio della stampante usando SetDIBitsToDevice o StretchDIBits. Se non si vuole, disattivare WCS per il controller di dominio della stampante chiamando SetICMMode prima di chiamare SetDIBitsToDevice o StretchDIBits.

Inoltre, quando si stampa in un controller di dominio della stampante con WCS attivato, la funzione SetICMMode deve essere chiamata dopo ogni chiamata alla funzione StartPage per riattivare WCS. La funzione StartPage chiama le funzioni RestoreDC e SaveDC, che comportano la disattivazione del servizio WCS per il controller di dominio della stampante.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione wingdi.h
Libreria Gdi32.lib
DLL Gdi32.dll

Vedi anche