다음을 통해 공유


디바이스 컨텍스트 표시

애플리케이션은 BeginPaint, GetDC 또는 GetDCEx 함수를 호출하고 해당 출력이 나타날 창을 식별하여 디스플레이 DC를 가져옵니다. 일반적으로 애플리케이션은 클라이언트 영역에서 그려야 하는 경우에만 디스플레이 DC를 가져옵니다. 그러나 GetWindowDC 함수를 호출하여 창 디바이스 컨텍스트를 가져올 수 있습니다. 애플리케이션 그리기를 마치면 EndPaint 또는 ReleaseDC 함수를 호출하여 DC를 해제해야 합니다.

비디오 디스플레이에는 5가지 유형의 DC가 있습니다.

  • 클래스
  • 일반
  • 프라이빗
  • 시간 범위
  • Parent

클래스 디바이스 컨텍스트

클래스 디바이스 컨텍스트 는 16비트 버전의 Windows와의 호환성을 위해 엄격하게 지원됩니다. 애플리케이션을 작성할 때는 클래스 디바이스 컨텍스트를 사용하지 마십시오. 개인 디바이스 컨텍스트를 대신 사용합니다.

일반적인 디바이스 컨텍스트

일반적인 디바이스 컨텍스트 는 시스템에서 특수 캐시에 유지 관리되는 DC를 표시합니다. 일반적인 디바이스 컨텍스트는 자주 그리기 작업을 수행하는 애플리케이션에서 사용됩니다. 시스템이 DC 핸들을 반환하기 전에 기본 개체, 특성 및 모드를 사용하여 공통 디바이스 컨텍스트를 초기화합니다. GDI 함수 중 하나를 호출하여 새 개체를 선택하거나, 기존 개체의 특성을 변경하거나, 새 모드를 선택하지 않는 한 애플리케이션에서 수행하는 모든 그리기 작업은 이러한 기본값을 사용합니다.

제한된 수의 일반적인 디바이스 컨텍스트만 존재하기 때문에 애플리케이션은 그리기를 완료한 후 해제해야 합니다. 애플리케이션이 공통 디바이스 컨텍스트를 해제하면 기본 데이터에 대한 변경 내용이 손실됩니다.

프라이빗 디바이스 컨텍스트

프라이빗 디바이스 컨텍스트 는 일반적인 디바이스 컨텍스트와 달리 애플리케이션이 데이터를 릴리스한 후에도 기본 데이터에 대한 변경 내용을 유지하는 DC를 표시합니다. 프라이빗 디바이스 컨텍스트는 CAD(컴퓨터 지원 디자인) 애플리케이션, 데스크톱 게시 애플리케이션, 그리기 및 그리기 애플리케이션 등과 같은 다양한 그리기 작업을 수행하는 애플리케이션에서 사용됩니다. 프라이빗 디바이스 컨텍스트는 시스템 캐시의 일부가 아니므로 사용 후 릴리스할 필요가 없습니다. 시스템은 해당 클래스의 마지막 창이 제거된 후 개인 디바이스 컨텍스트를 자동으로 제거합니다.

애플리케이션은 WNDCLASS 구조체의 스타일 멤버를 초기화하고 RegisterClass 함수를 호출할 때 먼저 CS_OWNDC 창 클래스 스타일을 지정하여 프라이빗 디바이스 컨텍스트를 만듭니다. (창 클래스에 대한 자세한 내용은 창 클래스를 참조하세요.)

CS_OWNDC 스타일을 사용하여 창을 만든 후 애플리케이션은 GetDC, GetDCEx 또는 BeginPaint 함수를 한 번 호출하여 프라이빗 디바이스 컨텍스트를 식별하는 핸들을 가져올 수 있습니다. 애플리케이션은 이 클래스로 만든 창을 삭제할 때까지 이 핸들(및 연결된 DC)을 계속 사용할 수 있습니다. 그래픽 개체 및 해당 특성 또는 그래픽 모드에 대한 변경 내용은 창이 삭제될 때까지 시스템에서 유지됩니다.

창 디바이스 컨텍스트

창 디바이스 컨텍스트를 사용하면 애플리케이션이 비클라이언트 영역을 포함하여 창의 아무 곳이나 그릴 수 있습니다. 창 디바이스 컨텍스트는 일반적으로 사용자 지정 비클라이언트 영역이 있는 창에 대한 WM_NCPAINTWM_NCACTIVATE 메시지를 처리하는 애플리케이션에서 사용됩니다. 다른 용도로는 창 디바이스 컨텍스트를 사용하지 않는 것이 좋습니다. 자세한 내용은 다음을 참조하세요. GetWindowDC를 참조하세요.

부모 디바이스 컨텍스트

부모 디바이스 컨텍스트를 사용하면 애플리케이션이 창에 대한 클리핑 영역을 설정하는 데 필요한 시간을 최소화할 수 있습니다. 애플리케이션은 일반적으로 부모 디바이스 컨텍스트를 사용하여 프라이빗 또는 클래스 디바이스 컨텍스트를 요구하지 않고 제어 창에 대한 그리기 속도를 향상합니다. 예를 들어 시스템은 푸시 단추 및 편집 컨트롤에 부모 디바이스 컨텍스트를 사용합니다. 부모 디바이스 컨텍스트는 최상위 또는 팝업 창이 없는 자식 창에서만 사용하기 위한 것입니다. 자세한 내용은 다음을 참조하세요. 부모 디스플레이 디바이스 컨텍스트를 참조하세요.