디바이스 컨텍스트
디바이스 컨텍스트는 디스플레이 또는 프린터와 같은 디바이스의 그리기 특성에 대한 정보를 포함하는 Windows 데이터 구조입니다. 모든 그리기 호출은 선, 셰이프 및 텍스트를 그리기 위한 Windows API를 캡슐화하는 디바이스 컨텍스트 개체를 통해 이루어집니다. 디바이스 컨텍스트는 Windows에서 디바이스 독립적 그리기를 허용합니다. 디바이스 컨텍스트를 사용하여 화면, 프린터 또는 메타파일로 그릴 수 있습니다.
C그림판DC 개체는 Windows의 공통 관용구를 캡슐화하고, 함수를 BeginPaint
호출한 다음, 디바이스 컨텍스트에서 그린 다음, 함수를 호출합니다EndPaint
. CPaintDC
생성자가 당신을 호출 BeginPaint
하고 소멸자가 호출EndPaint
합니다. 간소화된 프로세스는 CDC 개체를 만들고, 그린 다음, 개체를 삭제하는 CDC
것입니다. 프레임워크에서 이 프로세스의 대부분은 자동화됩니다. 특히 함수 OnDraw
는 이미 준비된(통해OnPrepareDC
)으로 전달 CPaintDC
되고 단순히 함수에 그리기만 하면 됩니다. 프레임워크에 의해 제거되고 기본 디바이스 컨텍스트가 함수 호출에서 반환되면 Windows로 OnDraw
릴리스됩니다.
CClientDC 개체는 창의 클라이언트 영역만 나타내는 디바이스 컨텍스트로 작업하는 것을 캡슐화합니다. CClientDC
생성자는 함수를 GetDC
호출하고 소멸자는 함수를 호출합니다ReleaseDC
. CWindowDC 개체는 프레임을 포함하여 전체 창을 나타내는 디바이스 컨텍스트를 캡슐화합니다.
CMetaFileDC 개체는 드로잉을 Windows 메타파일로 캡슐화합니다. 전달된 OnDraw
것과 달리 CPaintDC
이 경우 OnPrepareDC를 직접 호출해야 합니다.
마우스 그리기
프레임워크 프로그램에서 대부분의 그리기( 따라서 대부분의 디바이스 컨텍스트 작업)는 뷰의 OnDraw
멤버 함수에서 수행됩니다. 그러나 다른 용도로 디바이스 컨텍스트 개체를 계속 사용할 수 있습니다. 예를 들어 보기에서 마우스 이동에 대한 추적 피드백을 제공하려면 호출될 때까지 기다리 OnDraw
지 않고 보기에 직접 그려야 합니다.
이러한 경우 CClientDC 디바이스 컨텍스트 개체를 사용하여 뷰에 직접 그릴 수 있습니다.