Функция GetDeviceCaps (wingdi.h)

Функция GetDeviceCaps извлекает сведения о конкретном устройстве для указанного устройства.

Синтаксис

int GetDeviceCaps(
  [in] HDC hdc,
  [in] int index
);

Параметры

[in] hdc

Дескриптор контроллера домена.

[in] index

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

Индекс Значение
DRIVERVERSION
Версия драйвера устройства.
ТЕХНОЛОГИЯ
Технология устройств. Это может быть любое из следующих значений.
DT_PLOTTER Векторный плоттер
DT_RASDISPLAY Растровый дисплей
DT_RASPRINTER Растровый принтер
DT_RASCAMERA Растровая камера
DT_CHARSTREAM Поток символов
DT_METAFILE Метафайл
DT_DISPFILE Отображаемый файл
 

Если параметр hdc является дескриптором для контроллера домена расширенного метафайла, технология устройства — это технология устройства, на которое ссылается устройство, указанное в функции CreateEnhMetaFile . Чтобы определить, является ли он расширенным контроллером домена метафайла, используйте функцию GetObjectType .

HORZSIZE
Ширина физического экрана в миллиметрах.
VERTSIZE
Высота физического экрана в миллиметрах.
HORZRES
Ширина экрана (в пикселях); или для принтеров — ширина (в пикселях) печатаемой области страницы.
VERTRES
Высота экрана в растровых линиях; или для принтеров — высота (в пикселях) печатаемой области страницы.
LOGPIXELSXX
Количество пикселей на логический дюйм вдоль ширины экрана. В системе с несколькими мониторами отображения это значение одинаково для всех мониторов.
LOGPIXELSY
Количество пикселей на логический дюйм вдоль высоты экрана. В системе с несколькими мониторами отображения это значение одинаково для всех мониторов.
BITSPIXEL
Количество смежных битов цвета для каждого пикселя.
ПЛОСКОСТИ
Число цветовых плоскостей.
НУМБРЫ
Количество кистей, относящихся к устройству.
NUMPENS
Количество перьев, относящихся к устройству.
NUMFONTS
Количество шрифтов, относящихся к устройству.
NUMCOLORS
Количество записей в таблице цветов устройства, если глубина цвета устройства не превышает 8 бит на пиксель. Для устройств с большей глубиной цвета возвращается значение -1.
ASPECTX
Относительная ширина пикселя устройства, используемого для рисования линий.
АСПЕКТ
Относительная высота пикселя устройства, используемого для рисования линий.
АСПЕКТЫ
Диагональная ширина пикселя устройства, используемого для рисования линий.
PDEVICESIZE
Зарезервировано.
CLIPCAPS
Флаг, указывающий возможности обрезки устройства. Если устройство может обрезать прямоугольник, это значение равно 1. В противном случае — 0.
SIZEPALETTE
Количество записей в системной палитре. Этот индекс действителен, только если драйвер устройства задает бит RC_PALETTE в индексе RASTERCAPS и доступен только в том случае, если драйвер совместим с 16-разрядной версией Windows.
NUMRESERVED
Количество зарезервированных записей в системной палитре. Этот индекс действителен, только если драйвер устройства задает бит RC_PALETTE в индексе RASTERCAPS и доступен только в том случае, если драйвер совместим с 16-разрядной версией Windows.
COLORRES
Фактическое разрешение цвета устройства в битах на пиксель. Этот индекс действителен, только если драйвер устройства задает бит RC_PALETTE в индексе RASTERCAPS и доступен только в том случае, если драйвер совместим с 16-разрядной версией Windows.
PHYSICALWIDTH
Для устройств печати: ширина физической страницы в единицах устройства. Например, принтер для печати с разрешением 600 точек на бумаге размером 8,5 x11 дюйма имеет физическое значение ширины 5100 единиц устройства. Обратите внимание, что физическая страница почти всегда больше печатной области страницы и никогда не меньше.
PHYSICALHEIGHT
Для устройств печати: высота физической страницы в единицах устройства. Например, принтер для печати с разрешением 600 точек на бумаге размером 8,5 на 11 дюймов имеет физическое значение высоты 6600 единиц устройства. Обратите внимание, что физическая страница почти всегда больше печатной области страницы и никогда не меньше.
PHYSICALOFFSETX
Для устройств печати: расстояние от левого края физической страницы до левого края печатаемой области в единицах устройств. Например, принтер для печати с разрешением 600 точек на дюйм на бумаге размером 8,5 на 11 дюймов, который не может печатать на крайней левой 0,25-дюймовой бумаге, имеет горизонтальное физическое смещение в 150 единиц устройства.
PHYSICALOFFSETY
Для устройств печати: расстояние от верхнего края физической страницы до верхнего края печатаемой области в единицах устройства. Например, принтер для печати с разрешением 600 точек на дюйм на бумаге размером 8,5 на 11 дюймов, который не может печатать на самой верхней бумаге размером 0,5 дюйма, имеет вертикальное физическое смещение в 300 единиц устройства.
VREFRESH
Для устройств отображения: текущая вертикальная частота обновления устройства в циклах в секунду (Гц).

Вертикальное значение частоты обновления 0 или 1 представляет частоту обновления оборудования дисплея по умолчанию. Эта скорость по умолчанию обычно устанавливается переключателями на дисплее карта или системной плате компьютера или программой настройки, которая не использует функции отображения, такие как ChangeDisplaySettings.

SCALINGFACTORX
Коэффициент масштабирования для оси X принтера.
SCALINGFACTORY
Коэффициент масштабирования для оси Y принтера.
BLTALIGNMENT
Предпочтительное горизонтальное выравнивание рисунка, выраженное в виде кратных пикселей. Для оптимальной производительности рисования окна должны быть выровнены по горизонтали в соответствии с кратным этому значению. Нулевое значение указывает, что устройство ускоряется, и может использоваться любое выравнивание.
SHADEBLENDCAPS
Значение, указывающее возможности затенения и смешивания устройства. Дополнительные комментарии см. в разделе Примечания.
SB_CONST_ALPHA Обрабатывает элемент SourceConstantAlpha структуры BLENDFUNCTION , на который ссылается параметр blendFunction функции AlphaBlend .
SB_GRAD_RECT Может выполнять прямоугольники GradientFill .
SB_GRAD_TRI Может выполнять треугольники GradientFill .
SB_NONE Устройство не поддерживает ни одну из этих возможностей.
SB_PIXEL_ALPHA Поддерживает обработку альфа-канала для каждого пикселя в AlphaBlend.
SB_PREMULT_ALPHA Возможность обработки предварительного альфа-канала в AlphaBlend.
 
РАСТРОВЫЕ КАПЛИ
Значение, указывающее возможности растра устройства, как показано в следующей таблице.
RC_BANDING Требуется поддержка чередование.
RC_BITBLT Возможность передачи растровых изображений.
RC_BITMAP64 Поддерживает растровые изображения размером более 64 КБ.
RC_DI_BITMAP Поддерживает функции SetDIBits и GetDIBits .
RC_DIBTODEV Поддерживает функцию SetDIBitsToDevice .
RC_FLOODFILL Способен выполнять заливку.
RC_PALETTE Указывает устройство на основе палитры.
RC_SCALING Возможность масштабирования.
RC_STRETCHBLT Может выполнять функцию StretchBlt .
RC_STRETCHDIB Может выполнять функцию StretchDIBits .
 
CURVECAPS
Значение, указывающее возможности кривой устройства, как показано в следующей таблице.
CC_NONE Устройство не поддерживает кривые.
CC_CHORD Устройство может рисовать дуги аккордов.
CC_CIRCLES Устройство может рисовать круги.
CC_ELLIPSES Устройство может рисовать многоточие.
CC_INTERIORS Устройство может рисовать интерьеры.
CC_PIE Устройство может рисовать круговые клинья.
CC_ROUNDRECT Устройство может рисовать скругленные прямоугольники.
CC_STYLED Устройство может рисовать границы в стиле.
CC_WIDE Устройство может рисовать широкие границы.
CC_WIDESTYLED Устройство может рисовать широкие границы и стили.
 
LINECAPS
Значение, указывающее возможности линии устройства, как показано в следующей таблице:
LC_NONE Устройство не поддерживает линии.
LC_INTERIORS Устройство может рисовать интерьеры.
LC_MARKER Устройство может рисовать маркер.
LC_POLYLINE Устройство может рисовать ломаную линию.
LC_POLYMARKER Устройство может рисовать несколько маркеров.
LC_STYLED Устройство может рисовать стилистированные линии.
LC_WIDE Устройство может рисовать широкие линии.
LC_WIDESTYLED Устройство может рисовать широкие линии и стили.
 
POLYGONALCAPS
Значение, указывающее возможности многоугольников устройства, как показано в следующей таблице.
PC_NONE Устройство не поддерживает многоугольников.
PC_INTERIORS Устройство может рисовать интерьеры.
PC_POLYGON Устройство может рисовать многоугольник с альтернативным заполнением.
PC_RECTANGLE Устройство может рисовать прямоугольники.
PC_SCANLINE Устройство может нарисовать одну линию сканирования.
PC_STYLED Устройство может рисовать границы в стиле.
PC_WIDE Устройство может рисовать широкие границы.
PC_WIDESTYLED Устройство может рисовать широкие границы и стили.
PC_WINDPOLYGON Устройство может рисовать обмотки-заливки многоугольников.
 
TEXTCAPS
Значение, указывающее возможности текста устройства, как показано в следующей таблице.
TC_OP_CHARACTER Устройство поддерживает точность вывода символов.
TC_OP_STROKE Устройство может обеспечить точность вывода штрихов.
TC_CP_STROKE Устройство может обеспечить точность обрезки росчерка.
TC_CR_90 Устройство поддерживает поворот символов на 90 градусов.
TC_CR_ANY Устройство поддерживает любой поворот символов.
TC_SF_X_YINDEP Устройство может масштабироваться независимо в направлениях x и y.
TC_SA_DOUBLE Устройство может удвоить символ для масштабирования.
TC_SA_INTEGER Устройство использует целочисленные кратные значения только для масштабирования символов.
TC_SA_CONTIN Устройство использует любые кратные данные для точного масштабирования символов.
TC_EA_DOUBLE Устройство может рисовать символы двойного веса.
TC_IA_ABLE Устройство может замечать курсивом.
TC_UA_ABLE Устройство может подчеркивать.
TC_SO_ABLE Устройство может рисовать зачеркивающие.
TC_RA_ABLE Устройство может рисовать растровые шрифты.
TC_VA_ABLE Устройство может рисовать векторные шрифты.
TC_RESERVED Защищены; значение должно быть равно нулю.
TC_SCROLLBLT Устройство не может прокручиваться с помощью передачи битовых блоков. Обратите внимание, что это значение может быть противоположным ожидаемому.
 
COLORMGMTCAPS
Значение, указывающее возможности управления цветом устройства.
CM_CMYK_COLOR Устройство может принимать цветовой профиль ICC цветового пространства CMYK.
CM_DEVICE_ICM Устройство может выполнять ICM на драйвере устройства или самом устройстве.
CM_GAMMA_RAMP Устройство поддерживает GetDeviceGammaRamp и SetDeviceGammaRamp.
CM_NONE Устройство не поддерживает ICM.
 

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

Возвращаемое значение указывает значение нужного элемента.

Если nIndex имеет значение BITSPIXEL и устройство имеет значение 15bpp или 16bpp, возвращаемое значение равно 16.

Комментарии

Если nIndex имеет значение SHADEBLENDCAPS:

  • Для принтера GetDeviceCaps возвращает все, что сообщает принтер.
  • Для устройства отображения доступны все операции смешивания; кроме SB_NONE, возвращаются только SB_CONST_ALPHA и SB_PIXEL_ALPHA, которые указывают, являются ли эти операции ускоренными.
В системе с несколькими мониторами, если hdc является настольным компьютером, GetDeviceCaps возвращает возможности основного монитора. Если вам нужны сведения для других мониторов, необходимо использовать API с несколькими мониторами или CreateDC , чтобы получить HDC для контекста устройства (DC) конкретного монитора.
Примечание Display1 обычно является основным монитором, но не всегда.
 
GetDeviceCaps предоставляет следующие шесть индексов вместо экранирования принтера.
Индекс Escape-экран принтера заменен
PHYSICALWIDTH GETPHYSPAGESIZE
PHYSICALHEIGHT GETPHYSPAGESIZE
PHYSICALOFFSETX GETPRINTINGOFFSET
PHYSICALOFFSETY GETPHYSICALOFFSET
SCALINGFACTORX GETSCALINGFACTOR
SCALINGFACTORY GETSCALINGFACTOR
 
Примечание. GetDeviceCaps сообщает сведения, предоставляемые драйвером отображения. Если драйвер отображения отказывается сообщать какие-либо сведения, GetDeviceCaps вычисляет информацию на основе фиксированных вычислений. Если драйвер отображения сообщает о недопустимых сведениях, GetDeviceCaps возвращает недопустимые сведения. Кроме того, если драйвер дисплея отклоняет данные, GetDeviceCaps может вычислить неверные сведения, так как предполагается либо фиксированный точек на дюйм (96 точек на дюйм) или фиксированный размер (в зависимости от сведений, которые драйвер дисплея сделал и не предоставил). К сожалению, драйвер дисплея, реализованный в модели windows Display Driver Model (WDDM) (представленный в Windows Vista), приводит к тому, что GDI не получает сведения, поэтому GetDeviceCaps всегда должен вычислять информацию.
 

Примеры

Пример см. в разделе Подготовка к печати.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header wingdi.h (включая Windows.h)
Библиотека Gdi32.lib
DLL Gdi32.dll

См. также раздел

CreateEnhMetaFile

CreateIC

Функции контекста устройства

Общие сведения о контекстах устройств

DeviceCapabilities

Getdibits

GetObjectType

SetDIBits

SetDIBitsToDevice

StretchBlt

StretchDIBits