이 예제에서는 뷰의 중심에 문서에서 얻는 문자열을 인쇄합니다. OnDraw 호출이 화면 그리기용인 경우 pDC에 전달된 CDC 개체는 생성자가 이미 BeginPaint라고 하는 CPaintDC입니다. 그리기 함수에 대한 호출은 장치 컨텍스트 포인터를 통해 이루어집니다. 장치 컨텍스트 및 그리기 호출에 대한 자세한 내용은 MFC 참조 및 창 개체 작업에서 클래스 CDC를 참조하십시오. 다음은 WM_PAINT 메시지를 처리하기 위해 만들어진 OnPaint 처리기입니다. 이는 BeginPaint 함수 호출 내부에서 필요한 경우 Windows에서 WM_ERASEBKGND 메시지와 WM_NCPAINT 메시지를 생성할 수 있기 때문입니다. WM_PAINT 처리기 내부에 BeginPaint를 호출하지 않으면 창 테두리가 제대로 업데이트되지 않을 수 있습니다. 프레임워크는 클래스가 있는 DC를 나타냅니다. DC의 기본 클래스는 CDC입니다. CDC는 HDC 자체를 캡슐화합니다.

HDC에 대해 호출할 수 있는 모든 함수는 멤버 함수로 캡슐화됩니다. 또한 CDC에서 파생된 몇 가지 클래스가 있어 특수 DC를 만들고 유지 관리할 수 있습니다. CPaintDC 및 CClientDC는 이 섹션의 후반부에 설명됩니다. 대부분의 응용 프로그램은 CPaintDC 개체를 직접 만들 필요가 없습니다. Cview::OnPaint 멤버 함수의 기본 구현은 이러한 장치 컨텍스트를 만들고 클래스의 OnDraw 멤버 함수에 전달합니다(일반적으로 뷰의 응용 프로그램별 도면을 제공하기 위해 재정의됨). 보기가 잘못되면 Windows에서 WM_PAINT 메시지를 보냅니다. 뷰의 OnPaint 처리기 함수는 클래스 CPaintDC의 장치 컨텍스트 개체를 만들어 메시지에 응답하고 뷰의 OnDraw 멤버 함수를 호출합니다. 일반적으로 재정의 OnPaint 처리기 함수를 작성할 필요가 없습니다. VC ++ MFC 자습서 : GDI, 페인트, CPaintDC, 온 페인트, WM_PAINT 시작 페인트는 DC를 만드는 가장 일반적인 방법입니다. 그러나 이 함수는 창의 WM_PAINT 메시지 처리기에서만 호출해야 합니다.

이는 BeginPaint가 창의 잘못된 영역의 유효성을 검사하기 때문입니다.