Функция SetICMMode

Функция SetICMMode заставляет технологию Управление цветом изображения (ICM) включится, отключится или сделать запрос для данного контекста устройства (DC).

Синтаксис

int WINAPI SetICMMode(
  HDC hDC,
  int iEnableICM
);

Параметры

hDC

Идентифицирует дескриптор контекста устройства.

iEnableICM

Включает и выключает управление цветом изображения. Этот параметр может получить одно из нижеследующих постоянных значений.

Константа Предназначение
ICM_ON Включает управление цветом. Выключает коррекцию цвета старого стиля полутонов.
ICM_OFF Выключает управление цветом. Включает коррекцию цвета старого стиля полутонов.
ICM_QUERY Делает запрос текущего состояния управления цветом.
ICM_DONE_OUTSIDEDC Выключает управление цветом в контексте устройства (DC). В среде Windows 2000, также выключает коррекцию цвета старого стиля полутонов. Не поддерживается в среде Windows 95.

Возвращаемые значения

Если эта функция завершается успешно, возвращаемое значение - ненулевое значение.

Если эта функция завершается ошибкой, возвращаемое значение - нуль.

Если определяется флажок ICM_QUERY, а функция завершается успешно, возвращается ненулевое значение - ICM_ON или ICM_OFF, чтобы указать текущий режим.

Замечания

Если система не может найти, что профиль цвета ICC соответствует состоянию устройства, SetICMMode завершает работу из-за ошибки и возвращает нуль.

Как только технология Управления цветом изображения (ICM) включается для контекста устройства (DC), цвета, которые пересылаются в контекст устройства (DC), используются большинством функций API Win32, чтобы подобрать цвет. Основным исключением являются - функции BitBlt   и StretchBlt. Предполагается, что когда выполняется перемещение блока битов (блитирование) из одного контекста устройства (DC) в другой, эти два контекста устройства уже совместимы и не нуждаются ни в какой коррекции цвета. Если дело обстоит не так, коррекция цвета может выполниться. Специально, если, как источник для блитирования, используется независимый от устройства точечный рисунок (DIB), и блитирование выполняется в контекст устройства (DC), которому разрешили использовать технологию Управления цветом изображения (ICM), то подбор цвета выполнится. Если этого не то, что Вы хотите, выключите технологию ICM для целевого контекста устройства (DC) при помощи вызова SetICMMode перед тем, как вызвать функцию BitBlt или StretchBlt.

Если функция CreateCompatibleDC используется для того, чтобы создать точечный рисунок в контексте устройства (DC), то для точечного рисунка имеется возможность, что цвет подбирается дважды: первый раз, когда он создается, и второй раз, когда выполняется блитирование. Причина в том, что точечный рисунок в контексте устройства (DC), созданном функцией CreateCompatibleDC получает текущую кисть, перья и палитру исходного контекста устройства (DC). Однако, ICM будет заблокирована по умолчанию для нового контекста устройства. Если технология ICM позже будет включена для нового контекста устройства (DC) при помощи использования функция SetICMMode, то будет делаться коррекция цвета. Чтобы воспрепятствовать двойной коррекции цвета при использовании функции CreateCompatibleDC, используйте функцию SetICMMode, чтобы выключить технологию Управления цветом изображения (ICM) для исходного контекста устройства (DC) прежде, чем будет вызвана функция CreateCompatibleDC.

Когда совместимый контекст устройства (DC) создается из контекста устройства принтера (см. CreateCompatibleDC), по умолчанию всегда выполняется подбор цвета, если он допускается для контекста устройства принтера. Профиль цвета по умолчанию для принтера используется тогда, когда в контекст устройства (DC) принтера выполняется блитирование, используя функции SetDIBitsToDevice или StretchDIBits. Если это не то, чего Вы добивайтесь, выключите технологию ICM для контекста устройства (DC) принтера при помощи вызова SetICMMode перед вызовом SetDIBitsToDevice или StretchDIBits.

Кроме того, когда происходит печать через контекст устройства (DC) принтера со включенной технологией ICM, функция SetICMMode должна вызываться после каждого вызова функции StartPage, чтобы возвратиться в ICM. Это потому, что функция StartPage вызывает функции RestoreDC и SaveDC, которые отключают ICM от DC принтера.

Смотри также

Обзор Основные понятия управления цветом, Функции, используемые ICM, BitBlt, StretchBlt, CreateCompatibleDC, SetDIBitsToDevice, StretchDIBits, StartPage

Размещение и совместимость SetICMMode

К Windows XP Да 
л Windows 2000 Professional Да
и Windows NT Workstation Нет
е Windows Me Да
н Windows 98 Да
т Windows 95 Да
 
С Windows Server 2003 Да
е Windows 2000 Server Да
р Windows NT Server Нет
в    
е    
р    
Используемая библиотека Gdi32.lib
Используемая DLL -
 Заголовочный файл  
- объявлено в Wingdi.h
 - включено в -
 Unicode Нет
 Замечания по платформе Не имеется

 

Назад в оглавление
На главную страницу
В оглавление справки

Hosted by uCoz