다음을 통해 공유


CView::OnPrepareDC

호출 하기 전에 프레임 워크는 OnDraw 멤버 함수 호출 및 화면 표시 하기 전에 OnPrint 멤버 함수 호출 각 페이지에 인쇄 또는 인쇄 미리 보기 중.

virtual void OnPrepareDC(
   CDC* pDC,
   CPrintInfo* pInfo = NULL 
);

매개 변수

  • pDC
    문서 이미지를 렌더링 하는 데 사용할 장치 컨텍스트를 가리킵니다.

  • pInfo
    가리키는 있는 CPrintInfo 경우 현재 인쇄 작업에 설명 하는 구조 OnPrepareDC 호출 하 고 인쇄 또는 인쇄 미리 보기에 대 한. m_nCurPage 인쇄 하기 페이지 멤버를 지정 합니다.이 매개 변수는 NULL 경우 OnPrepareDC 화면 표시를 호출 합니다.

설명

화면 표시에 대 한 함수를 호출할 경우이 함수의 기본 구현은 아무 작업도 수행 하지.그러나이 기능은 파생된 클래스에서 같은 무시 됩니다 CScrollView; 디바이스 컨텍스트의 특성을 조정 하는 방법 따라서 기본 클래스 구현을 재정의 시작 부분에 항상 호출 해야 합니다.

인쇄에 대 한 함수를 호출 하면 기본 구현에 저장 된 페이지 정보 조사는 pInfo 매개 변수.문서 길이 지정 하지 않으면 OnPrepareDC 긴 한 페이지 문서를 가정 하 고 한 페이지를 인쇄 한 후 인쇄 루프를 중지 합니다.설정 하 여 인쇄 루프 함수 중지는 m_bContinuePrinting 구조체의 멤버 거짓.

재정의 OnPrepareDC 다음 이유 중 하나.

  • 지정 된 페이지에 대 한 필요에 따라 디바이스 컨텍스트의 특성을 조정.예를 들어, 매핑 모드 또는 다른 디바이스 컨텍스트의 특성을 설정 하는 경우이 함수에서 수행 합니다.

  • 인쇄 시 페이지 매김을 수행.일반적으로 사용 하 여 인쇄를 시작 하면 문서의 길이 지정 된 OnPreparePrinting 멤버 함수입니다.그러나 알 수 없는 경우 미리 긴 문서 (예: 레코드 수를 알 수 없는 데이터베이스에서 인쇄 하는 경우), 재정의 OnPrepareDC 문서 끝에 인쇄 되는 동안을 테스트 합니다.인쇄할 문서를 더 이상 있을 때 설정는 m_bContinuePrinting 의 멤버는 CPrintInfo 구조를 FALSE.

  • 프린터에서 페이지 별로 이스케이프 코드를 전송.이스케이프 코드를 보내려면 OnPrepareDC, 호출의 이스케이프 의 멤버 함수는 pDC 매개 변수.

기본 클래스 버전을 호출 OnPrepareDC 부분을 재정의 합니다.

예제

void CMyView::OnPrepareDC (CDC* pDC, CPrintInfo* pInfo)
{
   CView::OnPrepareDC(pDC, pInfo);

   // If we are printing, set the mapmode and the window
   // extent properly, then set viewport extent. Use the
   // SetViewportOrg member function in the CDC class to
   // move the viewport origin to the center of the view.

   if(pDC->IsPrinting()) // Is the DC a printer DC.
   {
      CRect rect;
      GetClientRect (&rect);

      pDC->SetMapMode(MM_ISOTROPIC);
      CSize ptOldWinExt = pDC->SetWindowExt(1000, 1000);
      ASSERT(ptOldWinExt.cx != 0 && ptOldWinExt.cy != 0);
      CSize ptOldViewportExt = pDC->SetViewportExt(rect.Width(), -rect.Height());
      ASSERT(ptOldViewportExt.cx != 0 && ptOldViewportExt.cy != 0);
      CPoint ptOldOrigin = pDC->SetViewportOrg(rect.Width()/2, rect.Height()/2);
   }
}

요구 사항

헤더: afxwin.h

참고 항목

참조

CView 클래스

계층 구조 차트

CDC::Escape

CPrintInfo 구조체

CView::OnBeginPrinting

CView::OnDraw

CView::OnPreparePrinting

CView::OnPrint