При помощи контекста устройства можно получить информацию о таких устройствах, как дисплей, печатающее устройство, графопостроитель. Например, можно определить такие параметры устройства отображения, как количество цветов, ширину и высоту поверхности отображения, относительную высоту и ширину каждого пиксела изображения.
Данную информацию можно получить, вызвав функцию GetDeviceCaps. Формат вызова данной функции представлен ниже:
nValue = GetDeviceCaps (hDC,nIndex);
Первый параметр данной функции задает контекст устройства, второй – является одним из двадцати пяти идентификаторов, определенных в файле windows.h.
Наиболее интересной информацией, которую можно получить при помощи функции GetDeviceCaps, являются данные о размере отображающей поверхности данного устройства. Например, можно определить размер экрана дисплея (в миллиметрах, дюймах или пикселах). Ниже приведены возможные значения параметра nIndex функции GetDeviceCaps, с помощью которых можно получить размеры экрана.
HORSISE и VERTSIZE
Возвращаются соответственно горизонтальный и вертикальный размеры отображающей поверхности устройства (далее экрана) в миллиметрах. Данная информация получается, исходя из стандартных для данного устройства значений.
HORZRES и VERTRES
Возвращаются соответственно горизонтальный и вертикальный размеры экрана в пикселах.
ASPECTX, ASPECTY и ASPECTXY
Возвращаются соответственно относительный горизонтальный, вертикальный, диагональный размеры пиксела.
LOGPIXELSX и LOGPIXELSY
Возвращаются соответственно количество пикселов в горизонтальном и вертикальном «логических дюймах». «Логический дюйм» физически не равен одному дюйму. Как правило, эти два идентификатора не используются.
При помощи функции GetDeviceCaps можно определить способ организации видеопамяти адаптера и количество поддерживаемых им цветов. Так, для определения количества битовых плоскостей видеоадаптера можно воспользоваться следующим вызовом:
nPlanes = GetDeviceCaps (hDC, PLANES);
Для определения количества битов, используемых в каждом слое видеопамяти для задания цвета пиксел, следует указать флаг BITSPIXEL:
nBitPixel = GetDeviceCaps (hDC, BITSPIXEL);
В том случае, когда необходимо определить общее количество битов на пиксел во всех слоях видеопамяти, также используется функция GetDeviceCaps:
nNumColors = GetDeviceCaps (hDC, NUMCOLORS);
Во всех трех представленных выше примерах использования функции GetDeviceCaps, первый параметр содержит контекст устройства, а второй является одной из трех констант, определенных в файле windows.h.