1 / 40

MFC Application Frameworks (AFX)

MFC Application Frameworks (AFX). 컴퓨터 계측 및 실습 (출처 : 제1회 지킴이 워크샵 에서 저자가 발표한 강좌 내용). MFC 란?. Microsoft Foundation Class ( 마이크로소프트 사의 기반 클래스) Visual C++ 과 함께 제공되는 내장 클래스 ( Library Class) Visual C++ 을 사용해 윈도우 프로그램을 간단하게 개발할 수 있는 유용한 클래스 기본 Window 의 형태들을 새로 만들지 않고 MFC 를 상속받아 그냥 쓰면 됨

hada
Download Presentation

MFC Application Frameworks (AFX)

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 Application Frameworks (AFX) 컴퓨터 계측 및 실습 (출처 : 제1회 지킴이 워크샵에서 저자가 발표한 강좌 내용)

  2. MFC 란? • Microsoft Foundation Class (마이크로소프트 사의 기반 클래스) • Visual C++과 함께 제공되는 내장 클래스 (Library Class) • Visual C++을 사용해 윈도우 프로그램을 간단하게 개발할 수 있는 유용한 클래스 • 기본 Window의 형태들을 새로 만들지 않고 MFC를 상속받아 그냥 쓰면 됨 • 프로그래머의 작업시간을 단축시켜줌

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

  4. 실세계 프로그램세계 메시지 사건 소프트웨어 객체 소프트웨어 객체 실객체 실객체 소프트웨어 객체 실객체 있는 그대로 표현 Object Oriented Programming • 실객체를 표현한 소프트웨어 객체로 프로그램 구성 • 소프트웨어 객체들의 상호 동작으로 프로그램 수행

  5. Object Oriented Programming 프레임 윈도우 오브젝트 메뉴 오브젝트 툴바 오브젝트 뷰 오브젝트 상태바 오브젝트

  6. Object 분리 예 = +

  7. 일관된 사용자 인터페이스

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

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

  10. MFC 기반 클래스 파생 클래스 CObject CCmdTarget CWinApp CMyApp CDocument CMyDoc CWnd CFrameWnd CMainFrame CView CMyView AppWizard

  11. CFrameWnd protected/private 멤버 멤버 함수 멤버 변수 CWinApp CDocument CView CMyApp 클래스의 인스턴스 (전역 변수)

  12. CWinApp 클래스(프로그램을 구동시키는 기능) • 프로그램의 시작과 종료 담당 • 전역 변수로 인스턴스 생성 • 프레임 윈도우 생성 • 메시지 루프 (무한루프) InitInstance( ); Run( ); ExitInstance( );

  13. CWinApp 프로그램 시작 InitInstance( ) 무한 루프 Run( ) ExitInstance( ) 프로그램 종료 CWinApp 클래스의 동작

  14. CWinApp CMyApp 속 프로그램 시작 InitInstance( ) InitInstance( ) 무한 루프 Run( ) ExitInstance( ) ExitInstance( ) 프로그램 종료 CWinApp 파생 클래스의 동작

  15. CWinApp 파생 클래스의 구현 class CMyApp : public CWinApp { public: CMyApp(); // Overrides public: virtual BOOL InitInstance(); };

  16. CWinApp 파생 클래스의 구현 BOOL CMyApp::InitInstance() { CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CMyDoc), RUNTIME_CLASS(CMainFrame), RUNTIME_CLASS(CMyView)); AddDocTemplate(pDocTemplate); return TRUE; }

  17. CWnd 클래스(윈도우에 관련된 기능) • 윈도우 제어용 멤버 함수 (100여 개) • 메시지 핸들러 함수 (200여 개)

  18. 윈도우 메시지 발생하는 상황 WM_CREATE 윈도우가 생성될 때 WM_ACTIVATE 윈도우가 활성화 되거나 비 활성화 될 때 WM_PAINT 윈도우가 다시 그려져야 할 필요가 있을 때 WM_MOUSEMOVE 윈도우의 위에서 마우스 커서가 움직였을 때 WM_COMMAND 사용자가 메뉴나 버튼을 눌러 명령을 내렸을 때 WM_LBUTTONDOWN 윈도우의 위에서 마우스 왼쪽 버튼이 눌렸을 때 WM_LBUTTONUP 윈도우의 위에서 마우스 왼쪽 버튼이 떼어졌을 때 WM_LBUTTONDBLCLK 윈도우의 위에서 마우스 왼쪽 버튼이 더블 클릭 됐을 때 WM_KEYDOWN 키보드가 눌렸을 때 WM_KEYUP 키보드가 떼어졌을 때 WM_SIZE 윈도우의 크기가 변경되었을 때 WM_MOVE 윈도우가 이동 되었을 때 WM_TIMER 윈도우에 설정된 타이머의 시간이 다 되었을 때 WM_DESTROY 윈도우가 없어질 때 윈도우 메시지

  19. 메시지 큐 윈도우 오퍼레이팅 시스템 메시지 프로그램 메시지 큐 CWinApp::Run( ) { switch( ) case : } 메시지 핸들러 WM_ACTIVATE WM_CREATE OnCreate OnActivate OnMove WM_ACTIVATE WM_MOVE

  20. 클래스 선택 현재 클래스에서 오버라이딩 가능한 함수 목록 이미 오버라이딩 된 함수 목록에서 선택된 함수를 삭제 이미 오버라이딩 된 함수 편집 현재 클래스에서 이미 오버라이딩 된 함수 목록 ClassWizard

  21. Message Map

  22. Microsoft Developer Studio

  23. MFC AppWizard File 메뉴 New항목

  24. Step 1 : Application Program type Setting

  25. Step 2 : Database Setting

  26. Step 3 : OLE Setting

  27. Step 4 : 화면 구성 Setting

  28. Step 5 : 프로그램 소스 Setting

  29. Step 6 : Class name & File Setting

  30. 프로젝트에 대한 정보 및 설명

  31. 응용 마법사가 만든 문서 편집기

  32. 실습클래스마법사(Class Wizard)사용법

  33. 왼쪽 마우스 버튼을 누르면 글자 생성 • 클래스마법사를 사용하여 마우스의 왼쪽 버턴을 클릭 했을 때, “ Hello! Event-Driven”문자열 출력

  34. 클래스마법사 실행

  35. 클래스마법사에서 View 클래스 지정 1 2 3

  36. WM_LBUTTONDOWN 메시지 오버라이딩

  37. 오버라이딩된 함수 정의 개별화 되는 작업 내용입력

  38. 프로그램 실행

  39. 참고 - 워크스페이스 창 클래스 뷰 리소스 뷰 파일 뷰 논리적인 단위 요소들에 대한 목록들을 보여 준다. 프로젝트에서 정의되는 리소스 목록들을 보여 준다 프로젝트에 정의된 파일의 목록들을 보여 준다

  40. 다음주 실습 내용 (다이얼로그 베이스를 이용한 사칙연산)

More Related