3월 11일: Visual C++

2020. 9. 16. 18:34
반응형

프로그램 언어의 일종. C언어에서 객체지향 개념을 포함시킨 것.

이 수업시간에는 객체지향 개념이 없으면 진행이 안됨.

객체지향이라는 게 무엇인지 스스로 공부해 오세요.

 

함수 마법사 = MFC 마법사

 

응용 프로그램 종류

  • 단일 문서 – 메모장처럼 한 순간에 한 개의 파일만
  • 다중 문서 – 워드 프로세서와 같이 여러 파일을 사용 가능
  • 대화 상자 기반 – 계산기와 같은 컨트롤을 포함한 응용 프로그램

 

비쥬얼 스튜디오에서 잘 만들어 놓은 것: 클래스 뷰(함수가 어디에 있고 무슨 기능인지 바로 확인 가능)

MFC 응용 프로그램 마법사가 생성한 클래스

클래스 이름

기본 클래스

역할

CFirstDoc

CDocument

뷰에 출력될 데이터 관리/파일에 데이터 저장 및 로드

CMainFrame

CFrameWnd

프로그램의 메인 윈도우 관리/메뉴 툴바 상태바 같은 영역 관리

CFirstApp

CWinApp

프로그램 시작과 끝 제어/3개(뷰, 문서, 프레임워크)로 문서 템플릿을 생성

CFirstView

CView

화면에 보여주는 역할/마우스가 클릭된 이벤트 처리/키 눌림 이벤트 처리

  • 기본적으로 기본 클래스에 해당 클래스에 대한 이름이 하나쯤은 포함되어 있다.

MFC는 기본적으로 Object로부터 파생된 부류이고 다른 하나는 CObject로 파생되지 않고 독립적으로 존재하는 부류이다.

 

MFC 클래스 계층 관계

기본적인 것은 App,Doc,Frame,View 이고 C어바웃다이얼로그는 추가적으로 사용 가능한 것.

 

AFX란? Application Framework.

  1. 메인 프레임 윈도우 클래스(CMainFrame:CFrameWnd)
  2. 도큐먼트 클래스(CFirstApp:CWinApp)
  3. 뷰 클래스(CFirstView:Cview)
  4. 응용 프로그램 클래스(CFirstDoc:CDocument)

 

CFrameWnd는 메인 프레임 윈도우를 관리 - 눈에 보임

Cview는 데이터를 시각적으로 보여주는 역할 - 눈에 보임

Cdocument는 데이터를 저장하고 관리 - 눈에 안보임

CWinApp는 프로그램 시작, 메인 프레임, 도큐먼트 클래스를 생성 관리 - 눈에 안보임

 

응용 프로그램 클래스(CFirstDoc:CDocument)

  • 프로그램의 시작과 종료를 담당하는 응용 프로그램 전체를 관리
  • InitInstance()
    • 도큐먼트 템플릿 객체를 생성
    • 도뮤먼트 클래스, 메인 프레임 클래스, 뷰 클래스를 생성
  • ExitInstance()
    • CWinApp는 프로그램을 종료시키면 이 함수가 실행됨
  • Run()
    • InitInstance() 함수가 호출된 후에 바로 호출된다.
    • 메시지 처리방식인 윈도우 응용 프로그램에서 무한루프를 돌면서 메시지가 발생했는지를 감지해서 이를 처리하는 함수
    • 교수님 말씀: 프로그램이 실행된 것이라고 보면 되요
    • 윈도우 닫기 버튼을 클릭하면 WM_QUIT 메시지가 발생해서 무한루프를 빠져 나감

 

메인 프레임 윈도우 클래스

  • 사용자로 하여금 윈도우 응용 프로그램이라고 느낄 수 있는 기본적인 틀을 제공해주는 클래스
  • 제목줄, 메뉴, 툴바, 상태바, 뷰 등 여러 가지

 

뷰 클래스

  • 사용자와의 인터페이스를 위해서 사용되는 영역으로 실질적으로 응용 프로그램의 결과를 출력해주는 영역
  • 마우스와 키보드 입력을 받아 처리
  • OnDraw()
    • Cdocument 클래스가 관리하는 데이터들을 시각적으로 보여주는 역할

 

도큐먼트 클래스

  • 뷰에 출력될 데이터를 내부적으로 저장하고 관리하는 영역
  • 우리가 볼 수는 없다
  • Serialize()
    • 관리되는 데이터를 영구 저장하기 위해 파일 입출력을 담당

 

오류의 종류

  1. 신택스(Syntax) 오류 - 문법 문제
  2. 시멘틱스(Semantics) 오류 - 원하지 않는 결과를 초래하게 되는 논리 오류

 

Cstring

  • 문자열을 저장하기 위한 클래스
  • Format()
    • Cstring은 다양한 타입의 데이터를 문자열로 변경하기 위한 함수
    • C언어의 printf() 함수와 유사
    • %d : decimal(10진수)의 약자.

 

템플릿(Tamplate)는 문서를 만들어 주는 것. 내가 입력한 문자열을 받아들이는 것이 CSingleDocumentTamplate

반응형
,