드로잉 보기

보기의 거의 모든 응용 프로그램에서 드로잉을 발생 OnDraw 뷰 클래스에서 재정의 해야 하는 멤버 함수입니다.(마우스를 드로잉에 논의 되지 않습니다 해석 사용자 입력을 통해는 보기.) 사용자 OnDraw 를 재정의 합니다.

  1. 문서를 제공 하는 멤버 함수를 호출 하 여 데이터를 가져옵니다.

  2. 프레임 워크에 전달 하는 디바이스 컨텍스트 개체의 멤버 함수를 호출 하 여 데이터를 표시 합니다. OnDraw.

문서의 데이터를 어떤 식으로든 변경 되는 경우 보기의 변경 내용을 반영 하도록 그려야 합니다.사용자 문서 보기를 변경 하는 경우 일반적으로 발생 합니다.이 경우는 문서 보기를 호출 UpdateAllViews 멤버 함수는 모든 보기에서 동일한 문서를 직접 업데이트를 알릴 수 있습니다.UpdateAllViews각 보기를 호출 OnUpdate 멤버 함수입니다.기본 구현은 OnUpdate 뷰의 전체 클라이언트 영역을 무효로 합니다.문서의 수정된 부분에 매핑하는 클라이언트 영역의 영역에만 무효화를 재정의할 수 있습니다.

UpdateAllViews 클래스의 멤버 함수 CDocumentOnUpdate 클래스의 멤버 함수 CView 수를 설명 하는 문서의 어떤 부분 수정 된 정보를 전달 합니다.이 "힌트" 메커니즘을 사용 하는 뷰가 다시 그려야 할 영역을 제한할 수 있습니다.OnUpdate2 "힌트" 인수를 사용 합니다.첫째, lHint, 형식의 LPARAM, 마음, 두 번째, 데이터를 전달 하는 수 있습니다 pHint, 형식의 CObject*에서 파생 된 모든 개체에 대 한 포인터 전달 수 있습니다 CObject.

보기를 사용할 수 없게 되 면 Windows 보냅니다 있는 WM_PAINT 메시지입니다.보기의 OnPaint 처리기 함수는 디바이스 컨텍스트 개체의 클래스를 작성 하 여 메시지에 응답 CPaintDC 보기를 호출 하 고 OnDraw 멤버 함수입니다.하면 정상적으로 재정의 작성 하지 않아도 OnPaint 처리기 함수입니다.

A 디바이스 컨텍스트에 그리기 특성에 대 한 정보는 디스플레이 나 프린터 같은 장치를 포함 하는 Windows 데이터 구조입니다.모든 드로잉 디바이스 컨텍스트 개체를 통해 호출 됩니다.화면에 그리기에 대 한 OnDraw 전달 되는 CPaintDC 개체입니다.프린터에서 그리는 경우에 전달 되는 CDC 객체가 현재 프린터에 설정 합니다.

코드 보기에서 그리기 먼저 해당 문서에 대 한 포인터를 검색 다음 드로잉 장치 컨텍스트를 통해 호출 합니다.다음과 같은 간단한 OnDraw 프로세스의 예제를 보여 줍니다.

void CMyView::OnDraw(CDC* pDC)
{
   CMyDoc* pDoc = GetDocument();
   ASSERT_VALID(pDoc);
   if (!pDoc)
      return;

   CString s = pDoc->GetData();   // Returns a CString
   CRect rect;
   GetClientRect(&rect);

   pDC->SetTextAlign(TA_BASELINE | TA_CENTER);
   pDC->TextOut(rect.right / 2, rect.bottom / 2, s, s.GetLength());
}

이 예제에서 정의한 것은 GetData 파생된 문서 클래스의 구성원으로 작동 합니다.

예제가 문서의 뷰 중앙에서 가져온 문자열을 인쇄 합니다.경우는 OnDraw 호출 되어 화면 드로잉에는 CDC 개체가 전달 pDC 되는 CPaintDC 생성자가 이미 호출 BeginPaint.그리기 함수는 디바이스 컨텍스트 포인터를 통해 호출.디바이스 컨텍스트 및 그리기 호출에 대 한 내용은 클래스를 참조 하십시오. CDC 에 있는 MFC 참조창 개체 사용.

더 많은 예제를 작성 하는 방법에 대 한 OnDraw, 표시는 MFC 샘플.

참고 항목

참조

뷰를 사용합니다.