blog.naver.com/reverse_ing/60140048162
CView::OnDraw()
그리기 코드를 모니터 화면과 프린터 모두에 출력한다.
OnPaint() 함수는 모니터단지 출력에 불과하다는 점과 다르다.
MS워드나 엑셀처럼 프린터 출력이 중요한 프로그램을 개발하는 상황이라면 클라이언트 뷰 화면의 코드와 프린터 출력 코드를 별도로 분리하지 말고 OnDraw() 함수 하나로 통일하는것이 여러모로 편리하고 구조적으로도 간결하다.
CView::OnPrint()
OnPrint() 함수는 가상함수로 선언된 CView 클래스의 멤버이다.
이 함수는 페이지 단위로 나누어지는 프린터 출력에서 각페이지를 출력할 때 마다 호출된다.
참고로 OnPrint() 함수가 인자로받는 CPrintInfo 구조의 m_nCurPage 멤버에는 현재 출력해야할 페이지 번호가 들어있다.
ex)
Strtmp.Format(L"Current Page : %d", pInfo->m_nCurPage);
pDC->TextOut(10,10, Strtmp);
CView::OnPreparePrinting()
OnPreparePrinting() 함수는 프린터 출력에앞서 인쇄 대화상자를 출력하기 직전에 호출된다.
이 함수가 DoOnPreparePrinting() 함수를 호출하면 인쇄 대화 상자가 화면에 나타나게 된다.
그러므로 이 함수에는 프린터 출력에 앞서 인쇄할 전체 문서의 길이가 얼마나 되는지 계산하는 코드가 주로 들어가게 된다.
SetMaxPage() 함수를 이용해서 출력 문서의 전체 길이를 설정할수 있을것이다.
ex)
BOOL CPrintDemoView::OnPreparePrinting(CPrintInfo* pInfo)
{
pInfo->SetMaxPage(3); //전체페이지가 3임을 명시
return DoPreparePrinting(pInfo);
}
CView::OnBeginPrinting(), OnEndPrinting()
OnBeginPrinting() 함수와 OnEndPrinting() 함수는 각각실제로 문서를 출력하기 시작하는 시점과 출력을 완료한 시점에 호출된다.
CWinApp클래스의 Initlnstance() 함수와 ExitInstance() 함수처럼 각각 프린터 출력에 필요한 GDI 리소스나 메모리를
할당/해제 하는 코드를 작성하는 것이 바람직하다.
참고 ++
IsPrinting()
IsPrinting() 함수는 DC가 프린터 DC인지 아닌지를 BOOL형으로 반환한다.
ex)
if(pDC->IsPrinting()) //프린터 출력인가?
{
pDC->SetMapMode(MM_ISOTROPIC);
pDC->SetWindowExt(100,100);
pDC->SetViewportExt(600,600);
//6배 확대해서 출력한다.
}
'Windows Prog' 카테고리의 다른 글
으아 =_= (0) | 2011.12.28 |
---|---|
- (0) | 2011.12.24 |
그동안 건강에 너무도 소홀했다 (0) | 2011.11.05 |
[Ruby] editor 다운로드 (0) | 2011.10.29 |
[Ruby] Ruby의 특징 (0) | 2011.10.29 |