일반적인 디스플레이 디바이스 컨텍스트
일반적인 디바이스 컨텍스트는 창의 클라이언트 영역에서 그리는 데 사용됩니다. 시스템은 창 클래스가 디스플레이 디바이스 컨텍스트 스타일을 명시적으로 지정하지 않는 모든 창에 대해 기본적으로 공통 디바이스 컨텍스트를 제공합니다. 일반적인 디바이스 컨텍스트는 일반적으로 디바이스 컨텍스트 특성을 광범위하게 변경하지 않고 그릴 수 있는 창에서 사용됩니다. 일반적인 디바이스 컨텍스트는 추가 메모리 또는 시스템 리소스가 필요하지 않기 때문에 편리하지만 애플리케이션이 특성을 사용하기 전에 많은 특성을 설정해야 하는 경우 불편할 수 있습니다.
시스템은 디스플레이 디바이스 컨텍스트 캐시에서 모든 일반적인 디바이스 컨텍스트를 검색합니다. 애플리케이션은 창을 만든 직후에 공통 디바이스 컨텍스트를 검색할 수 있습니다. 일반적인 디바이스 컨텍스트는 캐시에서 시작되므로 애플리케이션은 그리기 후 가능한 한 빨리 디바이스 컨텍스트를 항상 해제해야 합니다. 공통 디바이스 컨텍스트가 릴리스된 후에는 더 이상 유효하지 않으며 애플리케이션이 해당 컨텍스트를 사용하여 그리려고 시도해서는 안 됩니다. 다시 그리려면 애플리케이션이 새 공통 디바이스 컨텍스트를 검색하고 창에 그릴 때마다 공통 디바이스 컨텍스트를 계속 검색하고 해제해야 합니다. 애플리케이션이 GetDC 함수를 사용하여 디바이스 컨텍스트 핸들을 검색하는 경우 ReleaseDC 함수를 사용하여 핸들을 해제해야 합니다. 마찬가지로 각 BeginPaint 함수에 대해 애플리케이션은 해당 EndPaint 함수를 사용해야 합니다.
애플리케이션이 디바이스 컨텍스트를 검색할 때 시스템은 원본을 조정하여 클라이언트 영역의 왼쪽 위 모서리에 맞춥니다. 또한 디바이스 컨텍스트에 대한 출력이 클라이언트 영역으로 잘리도록 클리핑 영역을 설정합니다. 그렇지 않으면 클라이언트 영역 외부에 표시되는 모든 출력이 잘립니다. 애플리케이션이 BeginPaint를 사용하여 일반적인 디바이스 컨텍스트를 검색하는 경우 시스템은 출력을 추가로 제한하기 위해 클리핑 영역의 업데이트 영역도 포함합니다.
애플리케이션이 공통 디바이스 컨텍스트를 해제하면 시스템은 디바이스 컨텍스트의 특성에 대한 기본값을 복원합니다. 특성 값을 수정하는 애플리케이션은 공통 디바이스 컨텍스트를 검색할 때마다 이를 수행해야 합니다. 디바이스 컨텍스트를 해제하면 애플리케이션이 선택한 모든 그리기 개체가 해제되므로 애플리케이션은 디바이스 컨텍스트를 해제하기 전에 이러한 개체를 해제할 필요가 없습니다. 모든 경우에 애플리케이션은 일반 디바이스 컨텍스트가 릴리스된 후 기본이 아닌 선택 항목을 유지한다고 가정해서는 안 됩니다.