1 / 35

MFC 의 개요

MFC 의 개요. MFC 윈도우 애플리케이션을 생성하기 위해 만들어진 C++ 클래스 라이브러리 애플리케이션 프레임워크를 제공 MFC 의 이점 윈도우 프로그램 전문가로 만들어 준다 . 개발시간을 단축시키고 , 이식성이 강한 코드를 작성 ActiveX, OLE, 인터넷 프로그래밍 같은 기술 지원 응용 프로그램 ( 데이터베이스 , 네트워크 ) 을 손쉽게 작성 강력한 사용자 인터페이스를 지원. MFC 의 개요. MFC 의 표기법 헝가리안 표기법을 사용한다 . 클래스는 모두 C 로 시작한다 .

chandler
Download Presentation

MFC 의 개요

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. MFC의 개요 • MFC • 윈도우 애플리케이션을 생성하기 위해 만들어진 C++ 클래스 라이브러리 • 애플리케이션 프레임워크를 제공 • MFC의 이점 • 윈도우 프로그램 전문가로 만들어 준다. • 개발시간을 단축시키고, 이식성이 강한 코드를 작성 • ActiveX, OLE, 인터넷 프로그래밍 같은 기술 지원 • 응용 프로그램(데이터베이스, 네트워크)을 손쉽게 작성 • 강력한 사용자 인터페이스를 지원

  2. MFC의 개요 • MFC의 표기법 • 헝가리안 표기법을 사용한다. • 클래스는 모두 C로 시작한다. • 여러 단어가 하나의 클래스 이름일 경우 각 단어별로 첫 글자를 대문자로 표기한다. • 멤버 변수는 m_로 시작하고, 멤버 함수는 대문자로 시작한다. • 전역 함수는 Afx라는 접두어가 붙는다. • Afx는 Application Framework의 약자로 Microsoft사에서 MFC를 개발했던 팀의 이름이다.

  3. MFC 프로그램의 구조 • SDI 애플리케이션의 구조

  4. Template View Window Document Main Frame MFC 프로그램의 구조 • SDI 애플리케이션의 구조 • Template : • 윈도로 출력되는 형태 • Main Frame : • 윈도 외곽 경계를 담당하고 • 메뉴, 툴바, 상태바를 가지고 있음 • View 윈도 : • 실제 화면 처리를 담당 • 문자 출력, 그래픽 출력 등 • Document : • 디스크에서 데이터를 읽고 저장

  5. MFC 프로그램의 구조 • MDI 애플리케이션의 구조

  6. Main Frame Template View Window Document Child Frame . . . 위의 템플릿이 여러 개 있을 수 있음 MFC 프로그램의 구조 • MDI 애플리케이션의 구조 • 여러 개의 SDI형태 프로그램 • Main Frame • 독립적으로 설정되어 있고 그 안에 template • Template • Child Frame • View Window • Document

  7. Application Class Application Class View Window Main Frame Template Template Document View Window Document Child Frame Main Frame . . . 위의 템플릿이 여러 개 있을 수 있음 MFC 프로그램의 구조 • MFC 형태의 프로그램 구조 • Application Class • MFC프로그램은 템플릿을 포함하고 한 개의 인스턴스를 포함하는 Application class가 있음

  8. Visual C++란 • Visual C++의 특징 • 다양한 SDK 형태의 라이브러리를 제공한다 • Window환경에 맞는 C 언어용 표준 라이브러리 • 강력한 MFC가 있다 • SDK를 이용하여 클래스를 만들 때의 문제점을 해결 • 클래스 라이브러리 • 강력한 Wizard가 있다 • 단순히 반복적인 코딩을 자동으로 생성 • Class Wizard, AppWizard, Resource Editor ...

  9. 실습 2-1 • AppWizard 익히기 • 프로젝트를 만들 때 실행되는 프로그램 • 단순히 마우스 버튼으로 몇 개의 항목을 설정하면 자동적으로 프로젝트를 만들어 주고 자동 코딩을 해주는 기능 • 자동으로 소스를 만들어 주는 프로그램? • 기존의 소스를 단순하게 복사하여 코딩 하는 프로그램? • 기존의 있는 클래스를 상속 받는 또 하나의 클래스를 생성? Class CMainFrame : CFrameWnd { … }

  10. Application Wizard • AppWizard Step1 • 프로그램의 형태 선택 • Single Document • Multiple Document • Dialog Based • Document 유무 • 프로그램 지원 언어 • Visual C++ 6.0 에서 부터 한국어 지원

  11. Application Wizard • AppWizard Step2 • 데이터베이스 라이브러리 사용 설정 • 데이터 베이스 사용유무 • 헤더 파일만 포함 • Open,save등의 항목 없이 사용 • File 항목을 사용 하면서 db사용

  12. Application Wizard • AppWizard Step3 • OLE 옵션 설정 • OLE항목의 사용여부 • 객체 삽입 항목을 가지고 있는지 • 객체 삽입 항목에서만 구동 되는지 • 독립적 형태로 구동 되면서 OLE를 지원하여 객체 삽입 항목에서도 구동 되는지 • 자신도 객체 삽입 항목에서 구동 되는지 • Active X 옵션 설정 • ActiveX 컨트롤을 자신의 프로그램에 삽입 시킬 수 있는지.

  13. Application Wizard • 개체 삽입의 예 • 프로그램 실행 후 개체 삽입을 선택 했을 경우 • 자신의 프로그램에 개체삽입을 제공하는 다른 프로그램을 삽입 하여 구동

  14. Application Wizard • AppWizard Step4 • 윈도 출력 형태 옵션 설정 • 윈도에 들어가는 메뉴나 툴바, 상태바 등 설치 여부 • 툴바의 형태 • 진보적인 스타일을 지정하기 위해 Advanced 버튼을 사용

  15. Application Wizard • AppWizard Step4 • Advanced Option 선택 • 파일 확장자 • 파일 ID • 도큐먼트 이름 • 새로운 파일 선택 시 타이틀 바에 출력문자 • 캡션바에 출력문자 • 파일 대화 상자가 출력되었을 Filter • 파일 Type 이름

  16. Application Wizard • AppWizard Step4 • Advanced Option 선택 (Window Styles) • 메인 프레임 스타일 • MDI 형태일 경우 자식 프레임 스타일

  17. Application Wizard • AppWizard Step5 • 프로젝트 스타일 설정 • MFC Standard • Window Explorer • 소스에 커맨드 설정 • MFC라이브러리의 사용 방법 • DLL로 사용 • LIB로 사용

  18. Application Wizard • AppWizard Step6 • Class 와 파일 대한 정보 및 수정 • Class 이름은 모든 class에서 변경할 수 있다. • Source file과 Header file 이름은 App class 외에 다른 class 에서만 변경할 수 있다 • Base class이름은 View class 에서만 변경할 수 있다.

  19. Application Wizard • AppWizard 완료 • AppWizard를 사용하여 만든 프로젝트에 대한 정보를 보여준다. • Application type • Classes to be created • Features

  20. Application Wizard • MDI형 프로젝트 만들기 • SDI와 동일하고 Step 1에서 MDI를 선택 • 추가된 내용 • CChildFrame 만이 추가 되었다 • Child Frame class는 Base Class 이름만 변경할 수 없다.

  21. Application Wizard • AppWizard 기능 • 만들고자 하는 기본적인 프로젝트를 생성 해주고 그 안에 필요한 클래스 생성 • 클래스에 기본적인 내용을 코딩 • 기본적인 코딩시간을 절약 하므로 빠른 프로젝트 완성 • AppWizard사용 도중 실수로 옵션을 선택하지 않았을 경우 소스에서 새로 추가할 수 있다.

  22. Project Workspace • 프로젝트 워크스페이스의 구성 • MFC 클래스를 상속 받아 탄생된 새로운 클래스 • 클래스 소스가 설정되어 있는 파일들 • 소스파일 cpp • 헤더 파일 h • 프로그램에 필요한 메뉴, 아이콘, 문자열, 대화상자 같은 자원

  23. 항 목 내 용 ClassView 프로젝트에 설정되어 있는 클래스별로 출력, 해당 항목을 선택하면 수정 가능 ResourceView 프로젝트에 설정되어 있는 메뉴, 대화 상자, 문자열, 아이콘, 비트맵 등 자원의 리스트 출력, 해당 항목 선택 수정 가능 FileView 프로젝트에 설정되어 있는 파일 리스트 출력, 해당 항목을 선택하여 수정 가능 Project Workspace • 프로젝트 워크스페이스의 항목별 설명

  24. Project Workspace • Class View 화면 • 해당 항목을 더블 클릭하면 클래스 헤더가 나타나고 우측 버튼을 클릭하면 해당 클래스에 함수나 변수 설정되도록 메뉴 설정 • 해당 클래스의 멤버 함수와 멤버 변수의 리스트 • +버튼을 클릭한 상태에서 해당 항목을 클릭하면 해당 항목이 설정되어 있는 소스 파일로 이동 • protected 형태로 설정되어 있을 경우(열쇠) • protected 형태로 설정되어 있지 않을 경우는 열쇠 아이콘이 나타나지 않음

  25. Project Workspace • Resource View 화면 • Resource : 윈도우 프로그램을 만들 때 필요한 여러 자원 • 엑셀레이터(핫키 정의) 키값을 정의하는 항목 • 대화 상자(어떤 형태의 대화 상자의 출력할 폼을 만들어서 저장) 자원들 • 아이콘 자원 • 메뉴 자원 • 문자열 테이블 • 툴바

  26. Project Workspace • File View 화면 • 소스 파일 • 헤더 파일 • 자원 파일

  27. CObject CCmdTarget CWnd CWinThread CDocument 기타 CWinApp MFC Application Architecture • MFC클래스의 기본 구조 • MFC의 계층적 구조 형태 ► CMainFrame 과 Cview클래스는 CWnd에서 상속받음

  28. MFC Application Architecture • CObject 클래스 (최상위 클래스) • 메모리에 클래스를 설정하는 기능 • 클래스를 할당하기 위한 new연산자가 오버로딩 • /MFC/Include/Afx.h에 설정 • 클래스의 기능과 종류를 알 수 있는 함수가 있음 • IsSerializable() : 현재 클래스가 데이터를 디스크에 저장할 수 있는 기능을 자지고 있는지 없는지를 확인하는 함수 • AssertValid( ) : 현재 클래스가 유효한 클래스인가를 확인하는 함수 • Dump() : 현재 클래스의 상태를 확인하는 함수 • 디버깅할 때 이 함수를 이용하여 데이터의 상태를 확인하고 오류를 정리할 수 있음

  29. 윈도우 시스템 Application 메시지 전송 메시지 처리 이벤트 발생 화면에 출력 MFC Application Architecture • CCmdTarget클래스 • 메시지 전송을 담당하는 클래스 • 실질적으로 메시지를 처리하는 것이 아니라WM_COMMAND와 OLE 메시지만 담당

  30. MFC Application Architecture • CWnd클래스 • 화면에 보이는 윈도들은 모두 CWnd 에서 상속 받음 • 가장 많이 사용되는 클래스 • 윈도우의 최상위 클래스 • 상속해서 사용하지 직접 CWnd 클래스를 사용하지는 않는다. • 윈도우를 구동하는 모든 기능을 가진 함수가 있다. • Initialization • Window State Functions • Window Size and position • Coordinate Mapping Functions • Window Message Functions • ……..

  31. MFC Application Architecture • CWndThread 클래스 • 윈도가 스레드로 돌아갈 수 있도록 구동 되는 클래스 • 스레드는 독립적인 형태로 구동 되는 하나의 모듈 • 한 개의 프로그램을 독립적으로 움직이려면 한 개의 프로그램은 한 개 이상의 CWinThread를 포함해야 한다 • Multi-tasking이 가능 • CWndApp 클래스 • 한 개의 프로그램을 포함하고 관장하는 클래스

  32. MFC Application Architecture • CDocument 클래스 • 데이터를 디스크에서 읽어 들이거나 디스크에 저장하는 부분을 담당하는 클래스 • 주로 알고리즘을 저장 • 나중에 다른 프로그램에서 재사용이 용이

  33. CFrameWnd CControlBar CPropertySheet CDialog CView Control class CWnd를 상속 받은 클래스들 CWnd 프레임 형태의 윈도우 컨트롤 바 프로퍼티 시트 대화 상자 View 윈도우 컨트롤 들

  34. 실습 2-2 • Cstring 클래스 • 문자열을 처리하는 클래스 • 멤버 함수

  35. 실습 2-2 실행 화면

More Related