Hallym Univ MFC 개요 및 사용법 발표자 : 최 원 민 1 목 차목 차  MFC 의 개요  MFC 프로그램의 구조  SDI(Single Document Interface) 애플리케이션 구조  MDI(Multiple Document Interface)

Slides:



Advertisements
Similar presentations
.Net History. Visual Studio.Net 2002 /.Net Framework 1.0 제품의 버전 / 특징 2002 년 - Visual Studio.Net 2002 /.Net Framework 1.0 첫 통합 개발 환경 - C# 언어 등장 (C# 1.0)
Advertisements

Computer Graphics 윈도우 프로그래밍 김 창 헌김 창 헌. Computer Graphics 2 윈도우 시스템  윈도우  스크린 위에서 독립적으로 움직일 수 있는 사각형 영역  윈도우 시스템  유저와 어플리케이션간의 그래픽 스크린을 통한 인터페이스 를.
1 컴퓨터정보과 MFC 의 개요 MFC 윈도우 애플리케이션을 생성하기 위해 만들어진 C++ 클래스 라이브러리 애플리케이션 프레임워크를 제공 MFC 의 이점 윈도우 프로그램 전문가로 만들어 준다. 개발시간을 단축시키고, 이식성이 강한 코드를 작성 ActiveX, OLE,
MFC의 개요 MFC MFC의 이점 윈도우 애플리케이션을 생성하기 위해 만들어진 C++ 클래스 라이브러리
컴퓨터 공학 설계 및 실험 I MFC programming
난이도 : 초급 제1장 앱 인벤터 소개 및 준비.
컴퓨터와 인터넷.
컴퓨터 운영체제의 역사 손용범.
윈도우 프로그래밍 실습 김 창 헌.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
Chapter 16 : Struts 프레임워크 2. chapter 16 : Struts 프레임워크 2.
MFC Application Frameworks (AFX)
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
Lecture 2 MFC and Application Frameworks
Lab 10 Guide: 프린터 출력 예제. 한 페이지의 그림 인쇄 (교재 24장, 쪽)
Chapter 1 윈도우 프로그래밍 들어가기 윈도우 응용 프로그램을 작성하기 위해 필요한 기본 개념을 정립하고 Visual Studio를 설치한 후 MFC 응용 프로그램 마법사를 사용하여 MFC 프로그램을 작성하는 방법을 학습한다.
컴퓨터프로그래밍 1주차실습자료 Visual Studio 2005 사용법 익히기.
Image & Video processing
코크파트너 설치 가이드 Window 7.
Power Java 제3장 이클립스 사용하기.
Power Java 제3장 이클립스 사용하기.
MS-Access의 개요 1강 MOS Access 2003 CORE 학습내용 액세스 응용 프로그램은 유용한 데이터를
윤 홍 란 다이알로그(대화상자) 윤 홍 란
MFC를 이용한 네트워크게임 졸업 프로젝트 담당 교수 : 김재형 교수님 김 성준 김 민기.
윤 홍 란 MFC 기초 윤 홍 란
C 언어 1 1주차 C언어 시작하기 - 1차시 C 언어 특징 및 프로젝트 생성 Programming Language.
졸업작품발표 타자 연습 프로그램 By.. Eunju 담당 교수 : 이형원 교수님 학번 : 이름 : 김은주.
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
4장. 웹로직 서버상에서의 JDBC와 JTA의 운용
CH 1. MFC 전체보기 정보통신공학과 안 재 형.
Java 기초 (Java JDK 설치 및 환경설정)
제4장 대화상자 4.1 CDialogEx 클래스 4.2 대화상자 기반의 프로그램 실습 4-1 MFC 기본 컨트롤 사용법 익히기
CHAPTER 02 OpenCV 개요 PART 01 영상 처리 개요 및 OpenCV 소개.
Visual Basic .NET 처음 사용하기.
FTP 프로그램 채계화 박재은 박수민.
NJM Messenger 박상원 박연호.
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
WinCE Device Driver 실습 #3
WinCE Device Driver 실습 #2
ARM Development Suite v1.2
학습목표 학습목차 다른 홈페이지의 HTML 파일 코드를 보는 방법에 대해 알아봅니다.
Visual C++ Programming
속성과 리스너 초기화 파라미터 외 파라미터에 대해 이해한다. 리스너를 생성해보고 사용에 대해 이해한다.
2장 JSP 개발 환경 설정 이장에서 배울 내용 : JSP 페이지를 작성하기 위한 개발환경을 설정하고, 웹 어플리케이션 개발을 위해 반드시 이해하여야 할 웹 어플리케이션 폴더 구조에 대해 학습한다. 또한 요청된 JSP 페이지가 어떠한 처리과정을 거쳐 응답이 이루어지는가에.
Method & library.
SAS Statistical Analysis System 통계패키지 실습 (2011년 1학기)
홀인원2.0 설치 메뉴얼.
영상처리 실습 인공지능연구실.
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
Smart Workplace 개발자 가이드
Lab 1 Guide: 교재 2장 DrawX ( 쪽)
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
ASP.NET AJAX / AJAX Control Toolkit 응용 2008 컴퓨터공학실험( I )
Lab 8 Guide: 멀티스레딩 예제 2 * Critical Section을 이용한 멀티스레딩 동기화 (교재 15장, 쪽)
15강. 폼 데이터 값 검증 Validator를 이용한 검증 ValidationUtils 클래스
7주차 실습 FPGA 보드 사용법.
( Windows Service Application Debugging )
학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성. 학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성.
Cold Spring Harbor Laboratory Press 저널 이용 매뉴얼
가장 많이 사용 Accelerator 최상위 WM_COMMAND, OLE 메시지 관련 이벤트 처리만 가능 이 클래스를 상속받아서 다른 이벤트 처리 이벤트 처리 관련 윈도우(창) 최상위 클래스 멀티 테스킹(모듈) CFrameWnd, Cview,
기초C언어 제2주 실습 프로그래밍의 개념, 프로그램 작성 과정 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원
9 브라우저 객체 모델.
슬라이드 쇼의 설정 슬라이드 쇼의 실행 파일과 폴더의 관리 글꼴을 포함해서 저장 웹 페이지로 게시 압축 파일
Android -Data Base 윤수진 GyeongSang Univ. IT 1.
Installation Guide.
CHAP 15. 데이터 스토리지.
7 생성자 함수.
JAVA 프로그래밍 16장 JNLP.
MFC 기초 윈도우 응용프로그램 개발 간략한 역사 Microsoft Foundation Classes
20 XMLHttpRequest.
Presentation transcript:

Hallym Univ MFC 개요 및 사용법 발표자 : 최 원 민 1

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

도스상에서의 실행 파일 생성과정  3 Source Code (Sample.cpp) C++ Compiler Object File (Sample.obj) Linker Executable Program (Sample.exe)

윈도우 상에서 실행파일 생성과정 4 Developer Studio Linker Compiler Resource Compiler Source files Windows header files Windows, runtime, and MFC libraries OBJ files Runtime header files Executable (EXE) Resource file (RES) Bitmaps, icons, and other resources Resource.h Resource script file(RC) MFC header files Resource compilationCode compilation

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

MFC 개요도 6 이미 정의된 클래스들 이미 정의된 클래스들 ……………………… ………………………………. ……………………………. ……………… 상속 AppWizard CMyApp clsss CMyDoc class CMainFrame class CMyView class 기본 골격만 갖춘 창

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

MFC 발전과정 (1/2) 8 연도개발 도구 MFC 버전 주요 특징 1992MS C 비트 윈도우 API 를 클래스화 OLE 1.0 지원 1993 비주얼 C 도큐먼트 / 뷰 구조 도입으로 MFC 의 기본 골격 완성 DDX/DDV, 사용자 인터페이스 관련 클래스 추가 정적 / 동적 MFC 라이브러리 지원 1993 비주얼 C x OLE 2.01 지원 ODBC 클래스 추가 1994 비주얼 C++ 2.x 3.x 32 비트 윈도우 API 로 전환 멀티스레드 지원 윈속 (Winsock), MAPI 지원

MFC 발전과정 (2/2) 9 연도개발 도구 MFC 버전 주요 특징 1995 비주얼 C++ 4.x 4.x 공통 컨트롤 클래스 추가 DAO 와 32 비트 ODBC 지원 인터넷 관련 클래스 추가 1997 비주얼 C ATL 추가 1998 비주얼 C ATL 업그레이드 여러 개의 새로운 클래스 추가 (CHtlmView,...) OLE DB, ADO 지원 강화 2002 비주얼 C++.NET 7.0 새로운 MFC DLL 사용 (MFC70.DLL) MFC 와 ATL 의 통합 강화 사용자 인터페이스 클래스 추가 유틸리티 클래스 추가 ATL 서버 클래스 추가

SDI 애플리케이션의 구조  하나의 도큐먼트 프레임 윈도우만을 사용하는 프로그램 10 CWinApp 파생 클래스 CFrameWnd 파생 클래스 CView 파생 클래스 CDocument 파생 클래스

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

MDI 애플리케이션의 구조  같은 애플리케이션 인스턴스 안에 여러 개의 도 큐먼트 프레임 윈도우를 사용 가능함 12 CWinApp 파생 클래스 CMDIFrameWnd 파생 클래스 CView 파생 클래스 CDocument 파생 클래스 CMDIChildWnd 파생 클래스 CMDIChildWnd 파생 클래스

MDI 애플리케이션의 구조  기본 구성 클래스  CWinApp : 애플리케이션 전체를 나타냄  CMDIFrameWnd : 애플리케이션에서 메뉴와 상태바, 도구바를 포함한 외부 프레임을 나타냄  CMDIChildWnd : 애플리케이션에서 자식 윈도우의 외 부 프레임을 나타냄  CView : 애플리케이션내의 자식 윈도우의 클라이언트 혹은 작업영역을 나타냄  CDocument : 애플리케이션 내부에서 데이터를 읽고 저장하는 기능 제공 13

Application Frameworks(Afx) 14 CFrameWnd 윈도우의 프레임 ( 틀 ) 을 관리 CView 데이터를 보여주는 윈도우 CDocument 데이터를 저장, 처리 ( 눈에는 안보임 ) CWinApp 위의 세 오브젝트를 묶어주고, 프로그램을 구동 시킴 ( 눈에는 안보임 )

Afx 클래스의 계층구조 15 거의 모든 MFC 클래스의 기반 클래스 커맨드 메세지를 받는 기능 프로그램을 구동시키는 기능 데이터를 저장하고 처리하는 기능 윈도우에 관련된 기능 ( 눈에 보이는 오브젝트 ) 프로그램 윈도우 프레임 ( 외곽 ) 을 관리하는 기능 데이터를 보여주는 윈도우 관리하는 기능 CCmdTarget CWinApp CDocument CObject CWnd CFrameWnd CView

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

Application Wizard 17 CCmdTarget CWinApp CDocument CObject CWnd CFrameWnd CView MFC 기반 클래스 CMyApp CMyDoc CMainFrame CMyView 파생 클래스 프로젝트명 : My

Application Wizard 18 M F C CWinApp CFrameWnd CDocument CView C 프로젝트명 App CMainFrm C 프로젝트명 View C 프로젝트명 Doc 상 속

Application Wizard 19

Application Wizard 20

Application Wizard [Single document] SDI 기반의 프로젝트 만들기 [Multiple document] MDI 기반의 프로젝트 만들기 [Dialog based] 대화상자 기반의 프로젝트 만들기 [Document/View architecture support?] document 와 view 윈도우가 쌍으로 이루게 할 것인가 설 정함. 설정되지 않으면 document 가 만들어지지 않음 21

Application Wizard 22

Application Wizard [None] 제공되는 데이터베이스를 사용하지 않음 [Header files only] 데이터베이스 헤더파일만 포함됨 [Database view without file support] 데이터베이스 사용 애플리케이션의 [File] 메뉴에서 [open], [save], [close] 등을 지원하지 않음 [Database view with file support] [Data source … ] 데이터베이스 엔진과 파일을 선택함. 23

Application Wizard 24

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

Application Wizard 26

Application Wizard 27

Application Wizard 28

Application Wizard [MFC Standard] 일반적인 MFC 애플리케이션 작성 [Windows Explorer] 익스플로러를 포함한 웹 브라우저 기능을 가진 애플리케 이션을 작성 [As a shared DLL] MFC 라이브러리를 DLL 로 사용. 실행프로그램 크기가 작아 메모리 소비량이 적지만 프로그램 설치 시 DLL 도 함께 설치해야 함 [As a statically linked library] MFC 라이브러리를 컴파일 시 링크함. 프로그램 크기는 커지나 실행파일만으로 프로그램 구동됨 29

Application Wizard 30

Project workspace  Class view  프로젝트 안에서 사용되는 클래스 들과 클래스에 정의된 멤버 변수 및 멤버 함수를 보여주는 창임  Icon 의미 31 클래스 멤버 변수 멤버 함수 private 멤버 protected 멤버

Project workspace  Resource view  Resource 란 대화상자, 메뉴, 툴 바, 아이콘 등과 같이 프로그램 을 구현하기위해 부수적으로 필 요한 자원  [Accelerator]: 단축키 정보  [String Table]: 프로젝트에서 사 용될 문자열에 대한 리스트 32

Project workspace  File view  프로젝트에 포함된 파일들 보여줌  [Source Files]: 일반적으로 클래스 의 멤버함수를 정의한 cpp 파일들 포함  [Header Files]: 일반적으로 클래스 를 정의한 헤더 파일들 포함  [Resource Files]: 자원에 대한 정의 를 포함한 rc 파일 및 아이콘 파일, 툴바 이미지들이 포함됨 33

주요 MFC class 34 CObject CCmdTarget CWnd CWinThread CWinApp CFrameWnd CView CDialog CDocument [ 주요 클래스들의 계층도 ]

CObject 클래스  MFC 의 최상위 base class 로서 메모리에 클래 스를 설정하는 기능을 가짐  직렬화 (serialization) 지원  클래스의 객체가 디스크에 저장 가능하도록 지원하고 저장 유무를 확인 가능하도록 함  Run-time 클래스 정보 제공  현재 클래스의 상태를 확인하고 오류 정리 가능  객체의 검사 출력  클래스의 객체가 유효한지 검사 가능  Collection class 에 대한 호환성 제공  collection class 에 저장 가능한 객체는 CObject 클래스 를 상속 받은 클래스만이 가능함 35

CCmdTarget 클래스  MFC 의 message map architecture 를 지원하 기 위한 base 클래스  사용자 클래스를 정의할 때 윈도우 메시지에 대 한 처리가 필요한 클래스일 경우 CCmdTarget 클래스 혹은 CCmdTarget 클래스에서 파생된 클래스로부터 상속 받아야 함  모래시계 커서를 표시하는 멤버함수를 포함함 ( 어떤 명령이 처리될 때 사용자가 느낄 만큼의 시간이 소요될 경우 그 동안 화면에 모래시계 커 서를 표시하는 기능 ) 36

CWinThread 클래스  Multithreading 을 지원하기 위한 클래스  프로그램 실행 시 main thread 는 CWinApp 에 서 파생된 클래스에 의해 제공됨.  애플리케이션에서 여러 thread 를 실행시키고자 한다면 추가로 CWinThread 클래스의 오브젝트 가 필요함.  thread 의 우선순위, thread 간의 메시지 전달, thread 의 suspend, resume 기능 제공하는 멤 버 함수를 포함함 37

CWinApp 클래스  Windows application object 를 생성하기 위 한 base class 로서 application 을 초기화 하고 실행시키기 위한 멤버함수를 제공함.  MFC 를 사용하는 애플리케이션에는 하나의 CWinApp 파생 object 를 가짐. 38 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.

CWnd 클래스  화면에 출력되는 모든 윈도우의 base 클래스  윈도우를 제어하기 위한 공통 기능들이 정의된 클래스.  Window procedure 와 같은 기능을 하는 멤버 함수를 제공함  어떤 메시지가 들어왔을 때, 이 메시지는 message map 을 통해 해당되는 OnMessage CWnd 멤버 함수로 전달됨. OnMessage 멤버 함수를 override 해서 사용 함으로써 애플리케이션에서 특정 메시지에 대한 처리 를 할 수 있음. 39

CFrameWnd 클래스  윈도우의 외곽 경계를 정의하는 클래스  윈도우 메시지를 처리하며, 가시적인 윈도우 전 체 영역을 나타냄 ( 상태바, 도구바 포함하기도 함 ) 40 CFrameWnd CMainFrame CFrameWnd CMDIFrameWnd CMDIChildWnd CMainFrame CChildWnd

CView 클래스  윈도우의 작업영역 ( 클라이언트 영역 ) 을 정의하 는 클래스  화면 혹은 프린터 상에 document 의 내용을 보 여주며 document 에 대한 사용자의 입력 ( 키보 드, 마우스, 메뉴, 툴바, 스크롤바 등 ) 을 처리함 41

CDialog 클래스  모든 대화상자의 기본 클래스  메시지를 처리할 수 있으며 여러 가지 컨트롤들 을 쉽게 사용할 수 있음  Resource editor 를 사용하여 대화상자의 폼을 디자인할 수 있음 42

CDocument 클래스  애플리케이션에서 사용되는 데이터를 저장하고 제어하 는 클래스 (document 의 생성, 로딩 및 저장 기능 제공 )  애플리케이션에서 document 를 사용하는 일반적인 방 법  CDocument 의 파생 클래스를 생성  CDocument 파생 클래스에 document 의 데이터를 저장할 멤버 변 수를 추가함  document 의 데이터를 읽고 수정할 수 있는 멤버 함수를 구현. view 는 이 함수들을 이용함으로써 데이터를 사용자에게 보여줄 수 있음  데이터를 디스크에서 읽고 쓰기 위해 document 클래스의 CObject::Serialize 함수를 overriding 하여 사용 43