본문 바로가기

Language/MFC

4대클래스 자동생성 소스 분석[CView]


CView 클래스

  

CLyraView 클래스는 CView 클래스를 상속받은 것이다. 뷰 클래스의 영역을 설명하기 위해 예를 들겠다.

우리가 잘 쓰는 메모장에서 실제 우리가 텍스트를 쓰는 하얀 영역을 말한다.

  메시지 매핑

  BEGIN_MESSAGE_MAP(CDEMO1View, CView)

  //{{AfX_MSG_MAP(CDEMO1View)

  ON_WM_LBUTTONDOWN()

  //}}AFX_MSG_MAP

// Standard printing commands

ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)

ON_COMMAND(ID_FILE_PRINT_PREVIEW,

CView::OnFilePrintPreview)

END_MESSAGE_MAP()

 

생성자 함수

  CDEMO1View::CDEMO1View()

{

 

// TODO: add construction code here

 

}

 

소멸자 함수

 

CDEMO1View::~CDEMO1View()

{

}

 

함수 OnDraw안에 화면에 뿌려 줄 기능을 추가하면 된다. 화면에 출력할 여러 정보는 CDocument 클래

스에 추가한다고 앞 페이지에서 설명했다.

 

 

void CDEMO1View::OnDraw(CDC* pDC)

{

 

일단 도큐먼트와 연결을 한다.

  CDEMO1Dov* pDoc = GetDocument();

 

ASSERT_VALID라는 함수는 pDoc가 활성화되어 있는 것을 보증하는 함수이다. 즉, 프로그램이 실행되다가

오류가 발생하여 링크가 되지 않아 도큐먼트를 받지 못하면 pDoc가 null값이 되므로 '응용 프로그램 에

러'라는 메시지를 출력하고 프로그램을 종료하라는 뜻이다.

 

 

ASSERT_VALID(pDoc);

// TODO: add draw code for native data here

}

 

프린팅 미리보기 기능을 수행하는 함수이다. 이 기능은 프로젝트 시작시 AppWizard 4단계에서 Printing

and Print Preview 옵션을 선택했기 때문이다.

 

 

BOOL CDEMO1View::OnPreparePrinting(CPrintInfo* pInfo)

 

//default preparation

return DOPreparePrinting(pInfo);

 

}

//프린팅하는 함수

 

 

void CDEMO1View::OnBeginPrinting(CDC* /*pDC*/,

CPrintInfo* /*pInfo*/)

{

 

//TODO: add extra initialization before printing

 

}

//프린팅이 끝났을 때 사용하는 함수

 

 

void CDEMO1View::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)

{

 

//TODO: add cleanup after printing