2 mfc n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
제 2 장 MFC 개요 및 사용법 PowerPoint Presentation
Download Presentation
제 2 장 MFC 개요 및 사용법

Loading in 2 Seconds...

play fullscreen
1 / 43

제 2 장 MFC 개요 및 사용법 - PowerPoint PPT Presentation


  • 287 Views
  • Uploaded on

제 2 장 MFC 개요 및 사용법. 발표자 : 최 원 민. 목 차. MFC 의 개요 MFC 프로그램의 구조 SDI(Single Document Interface) 애플리케이션 구조 MDI(Multiple Document Interface) 애플리케이션 구조 Visual C++ 의 시작 Application Frameworks Application wizard Project workspace MFC Application architecture. Source Code (Sample.cpp).

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about '제 2 장 MFC 개요 및 사용법' - tatyana-valdez


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
2 mfc

제2장 MFC 개요 및 사용법

발표자 : 최 원 민

slide2
목 차
  • MFC의 개요
  • MFC 프로그램의 구조
    • SDI(Single Document Interface)애플리케이션 구조
    • MDI(Multiple Document Interface)애플리케이션 구조
  • Visual C++의 시작
    • Application Frameworks
    • Application wizard
    • Project workspace
  • MFC Application architecture
slide3

Source Code

(Sample.cpp)

C++

Compiler

Object File

(Sample.obj)

Linker

Executable

Program

(Sample.exe)

도스상에서의 실행 파일 생성과정
slide4

Developer Studio

Code compilation

Resource compilation

Windows header

files

Source

files

Resource

script file(RC)

Resource.h

Runtime header

files

Bitmaps, icons, and

other resources

MFC header

files

Resource Compiler

Resource file

(RES)

Compiler

OBJ files

Windows, runtime, and

MFC libraries

Executable

(EXE)

Linker

윈도우 상에서 실행파일 생성과정
slide5
MFC의 개요
  • MFC(Microsoft Foundation Class)란?
    • 윈도우 애플리케이션을 작성하기 위해 만들어진 C++ 클래스 라이브러리
    • application framework(Afx)를 제공함
      • winMain과 같은 윈도우 애플리케이션의 기본 구조를 제공하고 많은 작업들을 내부적으로 처리함
    • Win32 API 함수들을 사용함
    • Visual C++을 사용해 윈도우 프로그램을 간단하게 개발할 수 있는 유용한 클래스
    • 기본 Window의 형태들을 새로 만들지 않고 MFC를 상속 받아 그냥 쓰면 됨
slide6

상속

AppWizard

기본 골격만 갖춘 창

CMyApp clsss

CMyDoc class

CMainFrame class

CMyView class

MFC 개요도

………………………

……………………………….

…………………………….

………………

이미 정의된

클래스들

why mfc
Why MFC??
  • 이해가 쉬움
    • 연관된 함수와 데이타를 “클래스”를 이용하여 그룹화하였음
  • 코드의 재사용성 향상
  • 소프트웨어 개발의 용이성
    • 애플리케이션 프레임워크(application framework) 제공
    • 멤버 함수 나열
    • 코드 삽입의 용이성

응용프로그램

MFC

SDK API

운영체제

slide10

CWinApp 파생 클래스

CFrameWnd 파생 클래스

CView 파생 클래스

CDocument 파생 클래스

SDI 애플리케이션의 구조
  • 하나의 도큐먼트 프레임 윈도우만을 사용하는 프로그램
slide11
SDI 애플리케이션의 구조
  • 기본 구성 클래스
    • CWinApp : 애플리케이션 전체를 나타냄
    • CFrameWnd : 애플리케이션에서 메뉴와 상태바(status bar), 도구바(tool bar)를 포함한 외부 프레임을 나타냄
    • CView : 애플리케이션의 클라이언트 또는 작업영역을 나타냄
    • CDocument : 애플리케이션 내부에서 데이터를 읽고 저장하는 기능 제공
  • CFrameWnd, CView, CDocument 클래스가 하나의 템플릿(CSingleDocTemplate)으로 구성되므로 단일 템플릿 애플리케이션이라고도 함
slide12

CWinApp 파생 클래스

CMDIFrameWnd 파생 클래스

CMDIChildWnd

파생 클래스

CView 파생 클래스

CDocument 파생 클래스

MDI 애플리케이션의 구조
  • 같은 애플리케이션 인스턴스 안에 여러 개의 도큐먼트 프레임 윈도우를 사용 가능함
slide13
MDI 애플리케이션의 구조
  • 기본 구성 클래스
    • CWinApp : 애플리케이션 전체를 나타냄
    • CMDIFrameWnd : 애플리케이션에서 메뉴와 상태바, 도구바를 포함한 외부 프레임을 나타냄
    • CMDIChildWnd : 애플리케이션에서 자식 윈도우의 외부 프레임을 나타냄
    • CView : 애플리케이션내의 자식 윈도우의 클라이언트 혹은 작업영역을 나타냄
    • CDocument : 애플리케이션 내부에서 데이터를 읽고 저장하는 기능 제공
application frameworks afx

CFrameWnd

CDocument

CView

데이터를 저장, 처리 (눈에는 안보임)

윈도우의프레임(틀)을 관리

데이터를 보여주는 윈도우

CWinApp

위의 세 오브젝트를 묶어주고, 프로그램을 구동 시킴 (눈에는 안보임)

Application Frameworks(Afx)
slide15

CObject

CCmdTarget

CWinApp

CDocument

CWnd

CFrameWnd

CView

Afx 클래스의 계층구조

거의 모든 MFC 클래스의 기반 클래스

커맨드 메세지를 받는 기능

프로그램을 구동시키는 기능

데이터를 저장하고 처리하는 기능

윈도우에 관련된 기능 (눈에 보이는 오브젝트)

프로그램 윈도우 프레임(외곽)을 관리하는 기능

데이터를 보여주는 윈도우 관리하는 기능

application wizard
Application Wizard
  • AppWiard가 해 주는 일
    • MFC의 AFX 클래스에서 상속을 받아 아래 그림과 같이 네 개의 클래스를 생성
    • 상속 받은 클래스에는 MFC의 막강한 기능들이 상속
application wizard1

MFC 기반 클래스

파생 클래스

CObject

CCmdTarget

CWinApp

CMyApp

CDocument

CMyDoc

CWnd

CFrameWnd

CMainFrame

CView

CMyView

Application Wizard

프로젝트명 : My

application wizard2

M F C

상 속

Application Wizard

CWinApp

CFrameWnd

CView

CDocument

C프로젝트명App

C프로젝트명View

CMainFrm

C프로젝트명Doc

application wizard5
Application Wizard

[Single document]

SDI 기반의 프로젝트 만들기

[Multiple document]

MDI 기반의 프로젝트 만들기

[Dialog based]

대화상자 기반의 프로젝트 만들기

[Document/View architecture support?]

document와 view 윈도우가 쌍으로 이루게 할 것인가 설정함. 설정되지 않으면 document가 만들어지지 않음

application wizard7
Application Wizard

[None]

제공되는 데이터베이스를 사용하지 않음

[Header files only]

데이터베이스 헤더파일만 포함됨

[Database view without file support]

데이터베이스 사용 애플리케이션의 [File]메뉴에서

[open], [save], [close] 등을 지원하지 않음

[Database view with file support]

[Data source…]

데이터베이스 엔진과 파일을 선택함.

application wizard9
Application Wizard
  • OLE (Object Linking and Embedding)
    • 응용프로그램간에 데이터를 공유할 수 있도록 해주는 기능
    • 워드 문서 안에 엑셀에서 작성한 그래프를 삽입했을 때 그래프를 더블 클릭하면 엑셀 프로그램이 실행됨
  • ActiveX controls
    • 다른 개발자나 회사에서 만들어서 제공해 주는 컨트롤. 버튼이나 콤보 박스와 같은 경우는 윈도우 운영체제에서 제공하는 컨트롤임. 이 외에 좀 더 나은 기능의 컨트롤이 요구됨으로써 나오는 것이 컴포넌트(Component)임.
application wizard13
Application Wizard

[MFC Standard]

일반적인 MFC 애플리케이션 작성

[Windows Explorer]

익스플로러를 포함한 웹 브라우저 기능을 가진 애플리케이션을 작성

[As a shared DLL]

MFC 라이브러리를 DLL로 사용. 실행프로그램 크기가 작아 메모리 소비량이 적지만 프로그램 설치 시 DLL도 함께 설치해야 함

[As a statically linked library]

MFC 라이브러리를 컴파일 시 링크함. 프로그램 크기는 커지나 실행파일만으로 프로그램 구동됨

project workspace

클래스

멤버 변수

멤버 함수

private 멤버

protected 멤버

Project workspace
  • Class view
    • 프로젝트 안에서 사용되는 클래스들과 클래스에 정의된 멤버 변수 및 멤버 함수를 보여주는 창임
    • Icon 의미
project workspace1
Project workspace
  • Resource view
    • Resource란 대화상자, 메뉴, 툴바, 아이콘 등과 같이 프로그램을 구현하기위해 부수적으로 필요한 자원
    • [Accelerator]: 단축키 정보
    • [String Table]: 프로젝트에서 사용될 문자열에 대한 리스트
project workspace2
Project workspace
  • File view
    • 프로젝트에 포함된 파일들 보여줌
    • [Source Files]: 일반적으로 클래스의 멤버함수를 정의한 cpp 파일들 포함
    • [Header Files]: 일반적으로 클래스를 정의한 헤더 파일들 포함
    • [Resource Files]: 자원에 대한 정의를 포함한 rc 파일 및 아이콘 파일, 툴바 이미지들이 포함됨
mfc class

CObject

CCmdTarget

CWinThread

CWnd

CDocument

CWinApp

CFrameWnd

CDialog

CView

주요 MFC class

[주요 클래스들의 계층도]

cobject
CObject 클래스
  • MFC의 최상위 base class로서 메모리에 클래스를 설정하는 기능을 가짐
  • 직렬화 (serialization) 지원
    • 클래스의 객체가 디스크에 저장 가능하도록 지원하고 저장 유무를 확인 가능하도록 함
  • Run-time 클래스 정보 제공
    • 현재 클래스의 상태를 확인하고 오류 정리 가능
  • 객체의 검사 출력
    • 클래스의 객체가 유효한지 검사 가능
  • Collection class에 대한 호환성 제공
    • collection class에 저장 가능한 객체는 CObject 클래스를 상속 받은 클래스만이 가능함
ccmdtarget
CCmdTarget 클래스
  • MFC의 message map architecture를 지원하기 위한 base 클래스
  • 사용자 클래스를 정의할 때 윈도우 메시지에 대한 처리가 필요한 클래스일 경우 CCmdTarget 클래스 혹은 CCmdTarget 클래스에서 파생된 클래스로부터 상속 받아야 함
  • 모래시계 커서를 표시하는 멤버함수를 포함함 (어떤 명령이 처리될 때 사용자가 느낄 만큼의 시간이 소요될 경우 그 동안 화면에 모래시계 커서를 표시하는 기능)
cwinthread
CWinThread 클래스
  • Multithreading을 지원하기 위한 클래스
  • 프로그램 실행 시 main thread는 CWinApp에서 파생된 클래스에 의해 제공됨.
  • 애플리케이션에서 여러 thread를 실행시키고자 한다면 추가로 CWinThread 클래스의 오브젝트가 필요함.
  • thread의 우선순위, thread간의 메시지 전달, thread의 suspend, resume 기능 제공하는 멤버 함수를 포함함
cwinapp
CWinApp 클래스
  • Windows application object를 생성하기 위한 base class로서 application을 초기화 하고 실행시키기 위한 멤버함수를 제공함.
  • MFC를 사용하는 애플리케이션에는 하나의 CWinApp 파생 object를 가짐.

<Sequence of Execution>

Note

Names shown in bold type in this documentation indicate elements supplied by the MFClass

Library and Visual C++. Names shown in monospaced type indicate elements that you create or override.

slide39
CWnd 클래스
  • 화면에 출력되는 모든 윈도우의 base 클래스
  • 윈도우를 제어하기 위한 공통 기능들이 정의된 클래스.
  • Window procedure와 같은 기능을 하는 멤버 함수를 제공함
    • 어떤 메시지가 들어왔을 때, 이 메시지는 message map을 통해 해당되는 OnMessage CWnd 멤버 함수로 전달됨. OnMessage 멤버 함수를 override 해서 사용함으로써 애플리케이션에서 특정 메시지에 대한 처리를 할 수 있음.
cframewnd
CFrameWnd 클래스
  • 윈도우의 외곽 경계를 정의하는 클래스
  • 윈도우 메시지를 처리하며, 가시적인 윈도우 전체 영역을 나타냄 (상태바, 도구바 포함하기도 함)

CFrameWnd

CFrameWnd

CMDIFrameWnd

CMDIChildWnd

CMainFrame

CMainFrame

CChildWnd

<SDI 프로젝트>

<MDI 프로젝트>

cview
CView 클래스
  • 윈도우의 작업영역 (클라이언트 영역)을 정의하는 클래스
  • 화면 혹은 프린터 상에 document의 내용을 보여주며 document에 대한 사용자의 입력(키보드, 마우스, 메뉴, 툴바, 스크롤바 등)을 처리함
cdialog
CDialog 클래스
  • 모든 대화상자의 기본 클래스
  • 메시지를 처리할 수 있으며 여러 가지 컨트롤들을 쉽게 사용할 수 있음
  • Resource editor를 사용하여 대화상자의 폼을 디자인할 수 있음
cdocument
CDocument 클래스
  • 애플리케이션에서 사용되는 데이터를 저장하고 제어하는 클래스 (document의 생성, 로딩 및 저장 기능 제공)
  • 애플리케이션에서 document를 사용하는 일반적인 방법
    • CDocument의 파생 클래스를 생성
    • CDocument 파생 클래스에 document의 데이터를 저장할 멤버 변수를 추가함
    • document의 데이터를 읽고 수정할 수 있는 멤버 함수를 구현. view는 이 함수들을 이용함으로써 데이터를 사용자에게 보여줄 수 있음
    • 데이터를 디스크에서 읽고 쓰기 위해 document 클래스의 CObject::Serialize 함수를 overriding하여 사용