2011. 11. 10. 02:04

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
Posted by Triany