GetDeviceCaps 함수(wingdi.h)

GetDeviceCaps 함수는 지정된 디바이스에 대한 디바이스별 정보를 검색합니다.

구문

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

매개 변수

[in] hdc

DC에 대한 핸들입니다.

[in] index

반환할 항목입니다. 이 매개 변수는 다음 값 중 하나일 수 있습니다.

인덱스 의미
DRIVERVERSION
디바이스 드라이버 버전입니다.
기술
디바이스 기술. 다음 값 중 하나일 수 있습니다.
DT_PLOTTER 벡터 플로터
DT_RASDISPLAY 래스터 디스플레이
DT_RASPRINTER 래스터 프린터
DT_RASCAMERA 래스터 카메라
DT_CHARSTREAM 문자 스트림
DT_METAFILE Metafile
DT_DISPFILE 파일 표시
 

hdc 매개 변수가 향상된 메타파일의 DC에 대한 핸들인 경우 디바이스 기술은 CreateEnhMetaFile 함수에 지정된 참조된 디바이스의 핸들입니다. 향상된 메타파일 DC인지 확인하려면 GetObjectType 함수를 사용합니다.

HORZSIZE
물리적 화면의 너비(밀리미터)입니다.
VERTSIZE
물리적 화면의 높이(밀리미터)입니다.
HORZRES
화면의 너비(픽셀)입니다. 또는 프린터의 경우 페이지의 인쇄 가능한 영역 너비(픽셀)입니다.
VERTRES
높이, 래스터 라인, 화면; 또는 프린터의 경우 페이지의 인쇄 가능한 영역의 높이(픽셀)입니다.
LOGPIXELSX
화면 너비를 따라 논리적 인치당 픽셀 수입니다. 여러 디스플레이 모니터가 있는 시스템에서 이 값은 모든 모니터에 대해 동일합니다.
LOGPIXELSY
화면 높이를 따라 논리적 인치당 픽셀 수입니다. 여러 디스플레이 모니터가 있는 시스템에서 이 값은 모든 모니터에 대해 동일합니다.
BITSPIXEL
각 픽셀의 인접한 색 비트 수입니다.
비행기
색 평면의 수입니다.
마비 브러시
디바이스별 브러시의 수입니다.
NUMPENS
장치별 펜 수입니다.
NUMFONTS
디바이스별 글꼴 수입니다.
NUMCOLORS
디바이스의 색상 깊이가 픽셀당 8비트 이하인 경우 디바이스의 색 테이블에 있는 항목 수입니다. 색 깊이가 더 큰 디바이스의 경우 -1이 반환됩니다.
ASPECTX
선 그리기에 사용되는 디바이스 픽셀의 상대 너비입니다.
ASPECTY
선 그리기에 사용되는 디바이스 픽셀의 상대 높이입니다.
ASPECTXY
선 그리기에 사용되는 디바이스 픽셀의 대각선 너비입니다.
PDEVICESIZE
예약되어 있습니다.
클립캡
디바이스의 클리핑 기능을 나타내는 플래그입니다. 디바이스가 사각형에 클립할 수 있는 경우 1입니다. 그렇지 않으면 0입니다.
SIZEPALETTE
시스템 팔레트의 항목 수입니다. 이 인덱스는 디바이스 드라이버가 RASTERCAPS 인덱스에서 RC_PALETTE 비트를 설정하고 드라이버가 16비트 Windows와 호환되는 경우에만 사용할 수 있는 경우에만 유효합니다.
NUMRESERVED
시스템 팔레트의 예약된 항목 수입니다. 이 인덱스는 디바이스 드라이버가 RASTERCAPS 인덱스에서 RC_PALETTE 비트를 설정하고 드라이버가 16비트 Windows와 호환되는 경우에만 사용할 수 있는 경우에만 유효합니다.
COLORRES
디바이스의 실제 색 해상도(픽셀당 비트)입니다. 이 인덱스는 디바이스 드라이버가 RASTERCAPS 인덱스에서 RC_PALETTE 비트를 설정하고 드라이버가 16비트 Windows와 호환되는 경우에만 사용할 수 있는 경우에만 유효합니다.
PHYSICALWIDTH
디바이스 인쇄의 경우: 물리적 페이지의 너비(디바이스 단위)입니다. 예를 들어 8.5-x11인치 용지의 600dpi로 인쇄하도록 설정된 프린터의 실제 너비 값은 5100 디바이스 단위입니다. 실제 페이지는 거의 항상 페이지의 인쇄 가능한 영역보다 크며 결코 작지 않습니다.
PHYSICALHEIGHT
디바이스 인쇄의 경우: 물리적 페이지의 높이(디바이스 단위)입니다. 예를 들어 8.5-by-11인치 용지의 600dpi로 인쇄할 프린터 집합의 물리적 높이 값은 6600 디바이스 단위입니다. 실제 페이지는 거의 항상 페이지의 인쇄 가능한 영역보다 크며 결코 작지 않습니다.
PHYSICALOFFSETX
디바이스 인쇄의 경우: 물리적 페이지의 왼쪽 가장자리에서 인쇄 가능한 영역의 왼쪽 가장자리까지의 거리(디바이스 단위)입니다. 예를 들어 맨 왼쪽 0.25인치 용지에 인쇄할 수 없는 8.5-by-11인치 용지의 600dpi로 인쇄할 프린터 집합의 가로 물리적 오프셋은 150개 장치 단위입니다.
PHYSICALOFFSETY
디바이스 인쇄의 경우: 물리적 페이지의 위쪽 가장자리에서 인쇄 가능한 영역의 위쪽 가장자리까지의 거리(디바이스 단위)입니다. 예를 들어 맨 위 0.5인치 용지에 인쇄할 수 없는 8.5-by-11인치 용지의 600dpi로 인쇄할 프린터 집합의 세로 물리적 오프셋은 300 디바이스 단위입니다.
VREFRESH
디스플레이 디바이스의 경우: 디바이스의 현재 세로 새로 고침 속도(초당 주기(Hz))입니다.

세로 새로 고침 빈도 값 0 또는 1은 디스플레이 하드웨어의 기본 새로 고침 속도를 나타냅니다. 이 기본 속도는 일반적으로 디스플레이 카드 또는 컴퓨터 마더보드의 스위치 또는 ChangeDisplaySettings와 같은 디스플레이 기능을 사용하지 않는 구성 프로그램에 의해 설정됩니다.

SCALINGFACTORX
프린터의 x축에 대한 배율 인수입니다.
SCALINGFACTORY
프린터의 y축에 대한 배율 인수입니다.
BLTALIGNMENT
여러 픽셀로 표현되는 기본 가로 그리기 맞춤입니다. 최상의 그리기 성능을 위해 창은 이 값의 배수에 가로로 정렬되어야 합니다. 값이 0이면 디바이스가 가속화되고 맞춤이 사용될 수 있음을 나타냅니다.
SHADEBLENDCAPS
디바이스의 음영 및 혼합 기능을 나타내는 값입니다. 추가 주석은 비고를 참조하세요.
SB_CONST_ALPHA AlphaBlend 함수의 blendFunction 매개 변수에서 참조하는 BLENDFUNCTION 구조체의 SourceConstantAlpha 멤버를 처리합니다.
SB_GRAD_RECT GradientFill 사각형을 수행할 수 있습니다.
SB_GRAD_TRI GradientFill 삼각형을 수행할 수 있습니다.
SB_NONE 디바이스는 이러한 기능을 지원하지 않습니다.
SB_PIXEL_ALPHA AlphaBlend에서 픽셀당 알파를 처리할 수 있습니다.
SB_PREMULT_ALPHA AlphaBlend에서 미리 곱한 알파를 처리할 수 있습니다.
 
RASTERCAPS
다음 표와 같이 디바이스의 래스터 기능을 나타내는 값입니다.
RC_BANDING 밴딩 지원이 필요합니다.
RC_BITBLT 비트맵을 전송할 수 있습니다.
RC_BITMAP64 64KB보다 큰 비트맵을 지원할 수 있습니다.
RC_DI_BITMAP SetDIBits 및 GetDIBits 함수 지원할 수 있습니다.
RC_DIBTODEV SetDIBitsToDevice 함수를 지원할 수 있습니다.
RC_FLOODFILL 홍수 채우기를 수행할 수 있습니다.
RC_PALETTE 색상표 기반 디바이스를 지정합니다.
RC_SCALING 크기를 조정할 수 있습니다.
RC_STRETCHBLT StretchBlt 함수를 수행할 수 있습니다.
RC_STRETCHDIB StretchDIBits 함수를 수행할 수 있습니다.
 
곡선형
다음 표와 같이 디바이스의 곡선 기능을 나타내는 값입니다.
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 디바이스는 넓고 스타일이 지정된 선을 그릴 수 있습니다.
 
다각형 캡
다음 표와 같이 디바이스의 다각형 기능을 나타내는 값입니다.
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 예약; 0이어야 합니다.
TC_SCROLLBLT 디바이스는 비트 블록 전송을 사용하여 스크롤할 수 없습니다. 이 의미는 예상과 반대일 수 있습니다.
 
COLORMGMTCAPS
디바이스의 색 관리 기능을 나타내는 값입니다.
CM_CMYK_COLOR 디바이스는 CMYK 색 공간 ICC 색 프로필을 허용할 수 있습니다.
CM_DEVICE_ICM 디바이스는 디바이스 드라이버 또는 디바이스 자체에서 ICM을 수행할 수 있습니다.
CM_GAMMA_RAMP 디바이스에서 GetDeviceGammaRampSetDeviceGammaRamp를 지원합니다.
CM_NONE 디바이스는 ICM을 지원하지 않습니다.
 

반환 값

반환 값은 원하는 항목의 값을 지정합니다.

nIndex가 BITSPIXEL이고 디바이스에 15bpp 또는 16bpp가 있는 경우 반환 값은 16입니다.

설명

nIndex가 SHADEBLENDCAPS인 경우:

  • 프린터의 경우 GetDeviceCaps는 프린터에서 보고하는 내용을 반환합니다.
  • 디스플레이 디바이스의 경우 모든 혼합 작업을 사용할 수 있습니다. SB_NONE 외에 SB_CONST_ALPHA 및 SB_PIXEL_ALPHA 반환 값만 있습니다. 이 값은 이러한 작업이 가속화되는지 여부를 나타냅니다.
여러 모니터 시스템에서 hdc 가 데스크톱인 경우 GetDeviceCaps 는 기본 모니터의 기능을 반환합니다. 다른 모니터에 대한 정보를 원하는 경우 다중 모니터 API 또는 CreateDC 를 사용하여 특정 모니터의 디바이스 컨텍스트(DC)에 대한 HDC를 가져와야 합니다.
참고 Display1은 일반적으로 기본 모니터이지만 항상 그렇지는 않습니다.
 
GetDeviceCaps 는 프린터 이스케이프 대신 다음 6개의 인덱스를 제공합니다.
인덱스 프린터 이스케이프 교체됨
PHYSICALWIDTH GETPHYSPAGESIZE
PHYSICALHEIGHT GETPHYSPAGESIZE
PHYSICALOFFSETX GETPRINTINGOFFSET
PHYSICALOFFSETY GETPHYSICALOFFSET
SCALINGFACTORX GETSCALINGFACTOR
SCALINGFACTORY GETSCALINGFACTOR
 
참고GetDeviceCaps는 표시 드라이버가 제공하는 정보를 보고합니다. 디스플레이 드라이버가 정보 보고를 거부하는 경우 GetDeviceCaps 는 고정 계산에 따라 정보를 계산합니다. 표시 드라이버가 잘못된 정보를 보고하면 GetDeviceCaps 에서 잘못된 정보를 반환합니다. 또한 디스플레이 드라이버가 정보 보고를 거부하는 경우 GetDeviceCaps 는 고정 DPI(96 DPI) 또는 고정 크기(디스플레이 드라이버가 수행하고 제공하지 않은 정보에 따라 다름)를 가정하기 때문에 잘못된 정보를 계산할 수 있습니다. 아쉽게도 WDDM(Windows Display Driver Model)에 구현된 디스플레이 드라이버(Windows Vista에서 도입됨)는 GDI가 정보를 얻지 못하므로 GetDeviceCaps 는 항상 정보를 계산해야 합니다.
 

예제

예를 들어 인쇄 준비를 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 wingdi.h(Windows.h 포함)
라이브러리 Gdi32.lib
DLL Gdi32.dll

추가 정보

CreateEnhMetaFile

CreateIC

디바이스 컨텍스트 함수

디바이스 컨텍스트 개요

DeviceCapabilities

GetDIBits

GetObjectType

SetDIBits

SetDIBitsToDevice

Stretchblt

StretchDIBits