본문 바로가기
컴퓨터과학[2-1]/knou_[2-1]Visual_C

Visual C++ 6강 MFC SDI 프로그래밍

by boolean 2015. 1. 24.
728x90

Visual C++ 6강 MFC SDI 프로그래밍

  1. 여러 개의 작업윈도우가 떠있는 MDI와는 달리 단지 하나의 작업 윈도우만을 제공하는 프로그램을 SDI 프로그램이라고 한다. 하나의 뷰 윈도우를 가지고 있기 때문에 SDI(Single Document Interface) 프로그램이라고 한다.
  2. MFC는 윈도우 프로그래밍을 할 수 있도록 winAPI를 기능적으로 구분해서 C++클래스로 작성한 클래스 라이브러리이다.
  3. MFC SDI프로그램은 메인 프레임 윈도우가 최상위 윈도우이고, 차일드 윈도우로 하나의 뷰(View) 윈도우를 가지고 있다. MFC는 윈도우의 모든 기능을 클래스로 구현해서 제공하고 있다. 여기에서 메인프레임 윈도우를 나타내는 클래스는 CMainFrame이고, 뷰 윈도우를 나타내는 클래스는 CSDIView이다. 그리고 전체 프로그램을 관리하는 클래스가 있는데 이것이 CSDIApp클래스이다.
  4. 프로그램이 시작하면서 CWinApp클래스로부터 상속받은 응용프로그램 클래스 CSDIApp의 객체가 생성되고, 프로그램을 초기화 할 수 있도록 CSDIApp::InitInstance() 멤버 함수가 호출된다.
  5. MFC가 제공하는 SDI프로그램의 응용프로그램 프레임워크 기본골격은 다음과 같다.
     CWinApp에서 상속받은 응용프로그램 클래스      ☞ CSDIApp
     CFrameWnd에서 상속받은 프레임 윈도우 클래스    ☞ CMainFrame
     CView에서 상속받은 뷰 클래스             ☞ CSDIView
     CDocument에서 상속받은 다큐먼트 클래스       ☞ CSDIDoc
  6. MFC는 메시지 맵(Message Map)이라는 메시지 처리 메커니즘을 사용한다. 윈도우에 메시지가 전달되면, 윈도우 클래스의 멤버함수가 호출된다. 모든 메시지는 메시지를 처리하는 메시지 핸들러(handler)함수가 존재한다. 윈도우 메시지 핸들러 함수가 존재한다.
  7. MFC에서 사용되는 모든 윈도우는 윈도우 클래스마다 각각 제공되는 Create()함수를 호출해서 윈도우를 생성한다. 컨트롤 클래스도 각기 고유한 Create()함수를 제공하고 있다 CButton, CList, CProgressCtrl 클래스가 그 예이다.
  8. 다음 표는 대표적인 메시지와 이를 처리하는 메시지 핸들러 함수들이다.
    WM_CREATE OnCreate()
    WM_SIZE OnSize()
    WM_PAINT OnPaint()
    WM_CLOSE OnClose()

댓글