클래스 디스플레이 디바이스 컨텍스트
애플리케이션은 클래스 디바이스 컨텍스트를 사용하여 지정된 클래스에 속하는 모든 창에 대해 단일 디스플레이 디바이스 컨텍스트를 사용할 수 있습니다. 클래스 디바이스 컨텍스트는 종종 동일한 특성 값을 사용하여 그려지는 제어 창에서 사용됩니다. 프라이빗 디바이스 컨텍스트와 마찬가지로 클래스 디바이스 컨텍스트는 그리기 위해 디바이스 컨텍스트를 준비하는 데 필요한 시간을 최소화합니다.
시스템은 CS_CLASSDC 스타일을 가진 창 클래스에 속하는 경우 창에 대한 클래스 디바이스 컨텍스트를 제공합니다. 시스템은 클래스에 속하는 첫 번째 창을 만들 때 디바이스 컨텍스트를 만든 다음 클래스에서 이후에 생성된 모든 창에 대해 동일한 디바이스 컨텍스트를 사용합니다. 처음에는 클래스 디바이스 컨텍스트의 특성 기본값이 공통 디바이스 컨텍스트와 동일하지만 애플리케이션은 언제든지 이를 수정할 수 있습니다. 시스템은 클래스의 마지막 창이 제거될 때까지 클리핑 영역 및 디바이스 원본을 제외한 모든 변경 내용을 유지합니다. 한 창에 대한 변경 내용은 해당 클래스의 모든 창에 적용됩니다.
애플리케이션은 첫 번째 창이 만들어진 후 언제든지 GetDC 함수를 사용하여 클래스 디바이스 컨텍스트에 대한 핸들을 검색할 수 있습니다. 클래스 디바이스 컨텍스트가 디스플레이 디바이스 컨텍스트 캐시의 일부가 아니므로 애플리케이션은 핸들을 해제하지 않고도 핸들을 유지하고 사용할 수 있습니다. 애플리케이션이 동일한 창 클래스에 다른 창을 만드는 경우 애플리케이션은 클래스 디바이스 컨텍스트를 다시 검색해야 합니다. 디바이스 컨텍스트를 검색하면 새 창에 대한 올바른 디바이스 원본 및 클리핑 영역이 설정됩니다. 애플리케이션이 클래스의 새 창에 대한 클래스 디바이스 컨텍스트를 검색한 후 해당 창에 대해 다시 검색하지 않고는 디바이스 컨텍스트를 더 이상 원래 창에서 그리는 데 사용할 수 없습니다. 일반적으로 창에 그릴 때마다 애플리케이션은 창에 대한 클래스 디바이스 컨텍스트를 명시적으로 검색해야 합니다.
클래스 디바이스 컨텍스트를 사용하는 애플리케이션은 WM_PAINT 메시지를 처리할 때 항상 BeginPaint를 호출해야 합니다. 함수는 창에 대한 올바른 디바이스 원본 및 클리핑 영역을 설정하고 업데이트 영역을 통합합니다. 또한 애플리케이션은 EndPaint 를 호출하여 BeginPaint 가 숨긴 경우 케어를 복원해야 합니다. EndPaint 는 클래스 디바이스 컨텍스트에 다른 영향을 주지 않습니다.
시스템은 애플리케이션에 WM_ERASEBKGND 메시지를 보낼 때 클래스 디바이스 컨텍스트를 전달하여 현재 특성 값이 이 메시지를 처리할 때 애플리케이션 또는 시스템에서 수행하는 모든 그리기에 영향을 줄 수 있도록 합니다. 프라이빗 디바이스 컨텍스트가 있는 창에서와 마찬가지로 애플리케이션은 GetDCEx 를 사용하여 시스템이 클래스 디바이스 컨텍스트가 있는 창에 대한 공통 디바이스 컨텍스트를 반환하도록 강제할 수 있습니다.
클래스 디바이스 컨텍스트를 사용하지 않는 것이 좋습니다.