U E D R , A S I H C RSS

MFC/Print

{{| |}}

1. Print in MFC

document 안에 저장된 내용을 출력하는 것은 view 의 역할 이다. 이 과정은 상당히 복잡하다.
출력을 구현하 위해서는 view 클래스로 부터 상속받은 수많은 함수들을 오버라이딩 해야한다.

2. 프린트 로직과 관계된 함수들

  • CView::OnPreparePrinting()
    페이지 카운트를 계산한다. DoPreparePrinting() 호출

  • CView::OnBeginPrinting()
    GDI 자원을 할당
  • CDC::StartDoc()

  • CView::OnPrepareDC()
    뷰포트 원점을 변경. DC속성들을 설정
  • CDC::StartPage()

  • CView::OnPrint()
    헤더/꼬리말을 출력한다. 현재 페이지를 출력한다.
  • CDC::EndPage()
    페이지가 남았다면 OnPrepareDC()로 이동하여 루프
  • CDC::EndDoc()
  • CView::OnEndPrinting()
    GDI자원 해제

  • 뷰클래스의 5개의 멤버함수는 프로그래머가 재정의 해야한다. 최소한 5개중에서 OnPreparePrinting(), OnPrepareDC(), OnPrint()는 구현해야한다.
    프린터에 대한 데이터의 출력은 디스플레이에 출력하는 것과 동일한 방식으로 이루어진다. (GDI가 장치 독립적으로 만들어져 잇 때문이다.)
    프린터 작업과 관계되는 모든 함수는 CPrintInfo 형의 객체 포인터가 인자로 전달된다. 이 객체는 프린터 작업을 관리하는 함수들을 연결시켜준다.

3. CPrintInfo

프린트 작업에서 초적인 역할을 한다. 프린트 job 정보, 프린트 작업 상황에 대한 내용이 저장된다.
모든 멤버 변수는 public 변수로 다음과 같다.
m_pPD CPrintDialog 객체에 대한 포인터. 출력 대화 상자를 나타낸다.
m_bDirect 출력작업이 프린트 대화상자를 건너뛰면 TRUE 그외에는 FALSE
m_bPreview Print Preview 가 선택되면 TRUE, 아니면 FALSE
m_bContinuePrinting TRUE로 설정되면 출력 루프를 계속한다. FALSE가 되면 프린트 작업 종료.
m_nCurPage UINT형식을 갖는 값으로서 현재 페이지 번호를 저장
m_nNumPreviewPages UINT preview 우니도우에 나타나 있는 페이지들의 번호 1 or 2
m_lpUserData LPVOID 형식을 갖는다. 생성한 객체에 대한 포인터를 저장한다. 출력작업에 관한 추가 정보를 저장하는 객체를 생성할 수 있도록 한다. CPrintInfo 객체와 연계 시킬 수 있도록 한다.
m_rectDraw CRect 객체. 페이지에서 사용 가능한 영역을 논리 좌표로 정의 한다.
m_strPageDesc CString 객체로 프린트 preview 동안에 페이지 번호를 나타내 위해 프레임 웍에서 사용되는 포맷 문자열을 포함한다.
m_bDocObject 응용프로그램이 lPrint 인터페이스를 통하여 출력하면 TRUE로 설정되며, 그렇지 않은 경우에는 FALSE이다.
m_dwFlags m_bDocObject가 TRUE일때만 유호. DWORD값으로 lPrint::Print에 전달된 플래그
m_nOffsetPage m_bDocObject가 TRUE일때만 유효. lPrint job 안에서 첫번째 페이지 offset을 준다.

타 public 함수도 제공하다. 적 귀찮다. MSDN 찾아보길;;

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:42
Processing time 0.0161 sec