Freigeben über


SetICMMode-Funktion (wingdi.h)

Die SetICMMode-Funktion bewirkt, dass die Bildfarbverwaltung in einem bestimmten Gerätekontext (DC) aktiviert, deaktiviert oder abgefragt wird.

Syntax

int SetICMMode(
  HDC hdc,
  int mode
);

Parameter

hdc

Identifiziert das Handle für den Gerätekontext.

mode

Aktiviert und deaktiviert die Farbverwaltung für Bilder. Dieser Parameter kann einen der folgenden Konstantenwerte annehmen.

 

Wert Bedeutung
ICM_ON
Aktiviert die Farbverwaltung. Deaktiviert die altformatige Farbkorrektur von Halbtönen.
ICM_OFF
Deaktiviert die Farbverwaltung. Aktiviert die Alte Farbkorrektur von Halbtönen.
ICM_QUERY
Fragt den aktuellen Status der Farbverwaltung ab.
ICM_DONE_OUTSIDEDC
Deaktiviert die Farbverwaltung innerhalb von DC. Unter Windows 2000 wird auch die Farbkorrektur von Halbtönen im alten Stil deaktiviert. Wird unter Windows 95 nicht unterstützt.

Rückgabewert

Wenn diese Funktion erfolgreich ist, ist der Rückgabewert ein Nichtzero-Wert.

Wenn diese Funktion fehlschlägt, ist der Rückgabewert 0.

Wenn ICM_QUERY angegeben ist und die Funktion erfolgreich ist, wird der zurückgegebene wert nonzero ICM_ON oder ICM_OFF, um den aktuellen Modus anzugeben.

Hinweise

Wenn das System kein ICC-Farbprofil finden kann, das dem Zustand des Geräts entspricht, schlägt SetICMMode fehl und gibt null zurück.

Sobald WCS für einen Gerätekontext (Device Context, DC) aktiviert ist, werden Farben, die mit den meisten Win32-API-Funktionen an den DC übergeben werden, farblich übereinstimmen. Die primären Ausnahmen sind BitBlt und StretchBlt. Es wird davon ausgegangen, dass bei einer Bitblockübertragung (Blit) von einem DC zu einem anderen die beiden DCs bereits kompatibel sind und keine Farbkorrektur erforderlich ist. Ist dies nicht der Fall, kann eine Farbkorrektur durchgeführt werden. Insbesondere, wenn eine geräteunabhängige Bitmap (DEVICE Independent Bitmap, DIB) als Quelle für einen Blit verwendet wird und der Blit in einem DC ausgeführt wird, für den WCS aktiviert ist, wird ein Farbabgleich durchgeführt. Wenn Sie dies nicht möchten, deaktivieren Sie WCS für den Ziel-DC, indem Sie SetICMMode aufrufen, bevor Sie BitBlt oder StretchBlt aufrufen.

Wenn die CreateCompatibleDC-Funktion verwendet wird, um eine Bitmap in einem DC zu erstellen, ist es möglich, dass die Bitmap zweimal farbgeglichen wird, einmal beim Erstellen und einmal, wenn ein Blit ausgeführt wird. Der Grund ist, dass eine Bitmap in einem DC, das von der CreateCompatibleDC-Funktion erstellt wird, den aktuellen Pinsel, die Stifte und die Palette des Quell-DC abruft. WCS ist jedoch standardmäßig für den neuen DC deaktiviert. Wenn WCS später mithilfe der SetICMMode-Funktion für den neuen DC aktiviert wird, wird eine Farbkorrektur durchgeführt. Um doppelte Farbkorrekturen durch die Verwendung der CreateCompatibleDC-Funktion zu verhindern, verwenden Sie die SetICMMode-Funktion , um WCS für den Quell-DC zu deaktivieren, bevor die CreateCompatibleDC-Funktion aufgerufen wird.

Wenn ein kompatibler DC eines Druckers erstellt wird (siehe CreateCompatibleDC ), wird standardmäßig ein Farbabgleich durchgeführt, wenn er für den Dc des Druckers aktiviert ist. Das Standardfarbprofil für den Drucker wird verwendet, wenn mit SetDIBitsToDevice oder StretchDIBits ein Blit in den Dc des Druckers ausgeführt wird. Wenn Sie dies nicht möchten, deaktivieren Sie WCS für den Dc des Druckers, indem Sie SetICMMode aufrufen, bevor Sie SetDIBitsToDevice oder StretchDIBits aufrufen.

Außerdem muss die SetICMMode-Funktion nach jedem Aufruf der StartPage-Funktion aufgerufen werden, um WCS wieder zu aktivieren. Die StartPage-Funktion ruft die Funktionen RestoreDC und SaveDC auf, was dazu führt, dass WCS für den Dc des Druckers deaktiviert wird.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile wingdi.h
Bibliothek Gdi32.lib
DLL Gdi32.dll

Weitere Informationen