Download - MFC Application Frameworks (AFX)
![Page 1: MFC Application Frameworks (AFX)](https://reader035.vdocuments.mx/reader035/viewer/2022081420/568158b9550346895dc602b8/html5/thumbnails/1.jpg)
MFC Application Frameworks (AFX)
MFC Application Frameworks (AFX)
컴퓨터 계측 및 실습
( 출처 : 제 1 회 지킴이 워크샵에서 저자가 발표한 강좌 내용 )
![Page 2: MFC Application Frameworks (AFX)](https://reader035.vdocuments.mx/reader035/viewer/2022081420/568158b9550346895dc602b8/html5/thumbnails/2.jpg)
MFC 란 ?MFC 란 ?
Microsoft Foundation Class ( 마이크로소프트 사의 기반 클래스 )
Visual C++ 과 함께 제공되는 내장 클래스 (Library Class)
Visual C++ 을 사용해 윈도우 프로그램을 간단하게 개발할 수 있는 유용한 클래스
기본 Window 의 형태들을 새로 만들지 않고 MFC 를 상속받아 그냥 쓰면 됨
프로그래머의 작업시간을 단축시켜줌
![Page 3: MFC Application Frameworks (AFX)](https://reader035.vdocuments.mx/reader035/viewer/2022081420/568158b9550346895dc602b8/html5/thumbnails/3.jpg)
MFC 개요도MFC 개요도
이미 정의된 클래스들
이미 정의된 클래스들
………………………………………………………. ……………………………. ………………
상속
AppWizardCMyApp clsss
CMyDoc class
CMainFrame class
CMyView class
기본 골격만 갖춘 창
![Page 4: MFC Application Frameworks (AFX)](https://reader035.vdocuments.mx/reader035/viewer/2022081420/568158b9550346895dc602b8/html5/thumbnails/4.jpg)
소프트웨어객체
프로그램 세계
소프트웨어객체
소프트웨어객체
메시지
Object Oriented ProgrammingObject Oriented Programming
실객체를 표현한 소프트웨어 객체로 프로그램 구성 소프트웨어 객체들의 상호 동작으로 프로그램 수행
실객체
실세계
실객체
실객체
사건
있는 그대로 표현있는 그대로 표현
![Page 5: MFC Application Frameworks (AFX)](https://reader035.vdocuments.mx/reader035/viewer/2022081420/568158b9550346895dc602b8/html5/thumbnails/5.jpg)
Object Oriented ProgrammingObject Oriented Programming
메뉴 오브젝트
툴바 오브젝트
뷰 오브젝트
상태바 오브젝트
프레임 윈도우 오브젝트
![Page 6: MFC Application Frameworks (AFX)](https://reader035.vdocuments.mx/reader035/viewer/2022081420/568158b9550346895dc602b8/html5/thumbnails/6.jpg)
Object 분리 예Object 분리 예
체 크 프 로 그 램 체 크 프 로 그 램
= +
![Page 7: MFC Application Frameworks (AFX)](https://reader035.vdocuments.mx/reader035/viewer/2022081420/568158b9550346895dc602b8/html5/thumbnails/7.jpg)
일관된 사용자 인터페이스일관된 사용자 인터페이스
![Page 8: MFC Application Frameworks (AFX)](https://reader035.vdocuments.mx/reader035/viewer/2022081420/568158b9550346895dc602b8/html5/thumbnails/8.jpg)
Application Frameworks (AFX)Application Frameworks (AFX)
CFrameWnd
윈도우의 프레임 ( 틀 ) 을 관리CView
데이터를 보여주는 윈도우CDocument
데이터를 저장 , 처리 ( 눈에는 안보임 )
CWinApp위의 세 오브젝트를 묶어주고 , 프로그램을 구동 시킴 ( 눈에는 안보임 )
![Page 9: MFC Application Frameworks (AFX)](https://reader035.vdocuments.mx/reader035/viewer/2022081420/568158b9550346895dc602b8/html5/thumbnails/9.jpg)
AFX 클래스의 계층 구조AFX 클래스의 계층 구조
거의 모든 MFC 클래스의 기반 클래스
커맨드 메세지를 받는 기능
프로그램을 구동시키는 기능
데이터를 저장하고 처리하는 기능
윈도우에 관련된 기능 ( 눈에 보이는 오브젝트 )
프로그램 윈도우 프레임 ( 외곽 ) 을 관리하는 기능
데이터를 보여주는 윈도우 관리하는 기능
CCmdTarget
CWinApp
CDocument
CObject
CWnd
CFrameWnd
CView
![Page 10: MFC Application Frameworks (AFX)](https://reader035.vdocuments.mx/reader035/viewer/2022081420/568158b9550346895dc602b8/html5/thumbnails/10.jpg)
AppWizardAppWizard
CCmdTarget
CWinApp
CDocument
CObject
CWnd
CFrameWnd
CView
MFC 기반 클래스
CMyApp
CMyDoc
CMainFrame
CMyView
파생 클래스
![Page 11: MFC Application Frameworks (AFX)](https://reader035.vdocuments.mx/reader035/viewer/2022081420/568158b9550346895dc602b8/html5/thumbnails/11.jpg)
CFrameWnd
CWinApp
CDocument
CView
CMyApp 클래스의 인스턴스 ( 전역 변수 )
protected/private 멤버
멤버 함수멤버 변수
![Page 12: MFC Application Frameworks (AFX)](https://reader035.vdocuments.mx/reader035/viewer/2022081420/568158b9550346895dc602b8/html5/thumbnails/12.jpg)
CWinApp 클래스( 프로그램을 구동시키는 기능 )CWinApp 클래스( 프로그램을 구동시키는 기능 )
프로그램의 시작과 종료 담당– 전역 변수로 인스턴스 생성
프레임 윈도우 생성 메시지 루프 ( 무한루프 )
InitInstance( );
Run( );
ExitInstance( );
![Page 13: MFC Application Frameworks (AFX)](https://reader035.vdocuments.mx/reader035/viewer/2022081420/568158b9550346895dc602b8/html5/thumbnails/13.jpg)
CWinApp 클래스의 동작CWinApp 클래스의 동작
InitInstance( )
CWinApp
프로그램 시작
ExitInstance( )
프로그램 종료
Run( )무한 루프
![Page 14: MFC Application Frameworks (AFX)](https://reader035.vdocuments.mx/reader035/viewer/2022081420/568158b9550346895dc602b8/html5/thumbnails/14.jpg)
CWinApp 파생 클래스의 동작CWinApp 파생 클래스의 동작
CWinApp CMyApp상속
InitInstance( )
ExitInstance( )
프로그램 시작
InitInstance( )
Run( )
ExitInstance( )
프로그램 종료
무한 루프
![Page 15: MFC Application Frameworks (AFX)](https://reader035.vdocuments.mx/reader035/viewer/2022081420/568158b9550346895dc602b8/html5/thumbnails/15.jpg)
CWinApp 파생 클래스의 구현CWinApp 파생 클래스의 구현
class CMyApp : public CWinApp{
public:CMyApp();
// Overridespublic:virtual BOOL InitInstance();
};
![Page 16: MFC Application Frameworks (AFX)](https://reader035.vdocuments.mx/reader035/viewer/2022081420/568158b9550346895dc602b8/html5/thumbnails/16.jpg)
CWinApp 파생 클래스의 구현CWinApp 파생 클래스의 구현
BOOL CMyApp::InitInstance(){
CSingleDocTemplate* pDocTemplate;pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,RUNTIME_CLASS(CMyDoc),RUNTIME_CLASS(CMainFrame), RUNTIME_CLASS(CMyView));
AddDocTemplate(pDocTemplate);
return TRUE;}
![Page 17: MFC Application Frameworks (AFX)](https://reader035.vdocuments.mx/reader035/viewer/2022081420/568158b9550346895dc602b8/html5/thumbnails/17.jpg)
CWnd 클래스 ( 윈도우에 관련된 기능 )
CWnd 클래스 ( 윈도우에 관련된 기능 )
윈도우 제어용 멤버 함수 (100 여 개 ) 메시지 핸들러 함수 (200 여 개 )
![Page 18: MFC Application Frameworks (AFX)](https://reader035.vdocuments.mx/reader035/viewer/2022081420/568158b9550346895dc602b8/html5/thumbnails/18.jpg)
윈도우 메시지윈도우 메시지
윈도우 메시지 발생하는 상황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 윈도우가 없어질 때
![Page 19: MFC Application Frameworks (AFX)](https://reader035.vdocuments.mx/reader035/viewer/2022081420/568158b9550346895dc602b8/html5/thumbnails/19.jpg)
메시지 큐메시지 큐
윈도우 오퍼레이팅 시스템
프로그램
메시지 큐
WM_ACTIVATEWM_CREATE
WM_ACTIVATE
WM_MOVE
메시지
CWinApp::Run( )
{
switch( )
case :
}
메시지 핸들러OnCreate
OnActivate
OnMove
![Page 20: MFC Application Frameworks (AFX)](https://reader035.vdocuments.mx/reader035/viewer/2022081420/568158b9550346895dc602b8/html5/thumbnails/20.jpg)
ClassWizardClassWizard
클래스 선택
현재 클래스에서 오버라이딩 가능한 함수 목록
현재 클래스에서 이미 오버라이딩 된 함수 목록
이미 오버라이딩 된 함수 목록에서 선택된 함수를 삭제
이미 오버라이딩 된 함수 편집
![Page 21: MFC Application Frameworks (AFX)](https://reader035.vdocuments.mx/reader035/viewer/2022081420/568158b9550346895dc602b8/html5/thumbnails/21.jpg)
Message MapMessage Map
B E G IN _M E S S AG E _M AP (C M ainF rame, C F rameWnd)
/ / {{AF X_M S G _M AP (C M ainF rame)
O N _WM _M O U S E M O VE ()
O N _WM _C RE ATE ()
/ / }}AF X_M S G _M AP
E N D_M E S S AG E _M AP ()
C F rameWnd 에 서 상 속 받 은C M ainF rame 클 래 스 의 메 시 지 맵 임 을 나 타 냄
메 시 지 맵 의 시 작 을 나 타 냄
메 시 지 맵 의 끝 을 나 타 냄
C lassWizard .가 파 싱 하 는 부 분 C lassWizard 이 부 분 은 에 의 해
자 동 으 로 관 리 됨
O nM ouseM ove 함 수 오 버 라 이 딩O nC reate 함 수 오 버 라 이 딩
![Page 22: MFC Application Frameworks (AFX)](https://reader035.vdocuments.mx/reader035/viewer/2022081420/568158b9550346895dc602b8/html5/thumbnails/22.jpg)
Microsoft Developer StudioMicrosoft Developer Studio
![Page 23: MFC Application Frameworks (AFX)](https://reader035.vdocuments.mx/reader035/viewer/2022081420/568158b9550346895dc602b8/html5/thumbnails/23.jpg)
MFC AppWizardMFC AppWizard
File 메뉴 New 항목
![Page 24: MFC Application Frameworks (AFX)](https://reader035.vdocuments.mx/reader035/viewer/2022081420/568158b9550346895dc602b8/html5/thumbnails/24.jpg)
Step 1 : Application Program type Setting Step 1 : Application Program type Setting
![Page 25: MFC Application Frameworks (AFX)](https://reader035.vdocuments.mx/reader035/viewer/2022081420/568158b9550346895dc602b8/html5/thumbnails/25.jpg)
Step 2 : Database Setting Step 2 : Database Setting
![Page 26: MFC Application Frameworks (AFX)](https://reader035.vdocuments.mx/reader035/viewer/2022081420/568158b9550346895dc602b8/html5/thumbnails/26.jpg)
Step 3 : OLE SettingStep 3 : OLE Setting
![Page 27: MFC Application Frameworks (AFX)](https://reader035.vdocuments.mx/reader035/viewer/2022081420/568158b9550346895dc602b8/html5/thumbnails/27.jpg)
Step 4 : 화면 구성 Setting Step 4 : 화면 구성 Setting
![Page 28: MFC Application Frameworks (AFX)](https://reader035.vdocuments.mx/reader035/viewer/2022081420/568158b9550346895dc602b8/html5/thumbnails/28.jpg)
Step 5 : 프로그램 소스 Setting Step 5 : 프로그램 소스 Setting
![Page 29: MFC Application Frameworks (AFX)](https://reader035.vdocuments.mx/reader035/viewer/2022081420/568158b9550346895dc602b8/html5/thumbnails/29.jpg)
Step 6 : Class name & File Setting Step 6 : Class name & File Setting
![Page 30: MFC Application Frameworks (AFX)](https://reader035.vdocuments.mx/reader035/viewer/2022081420/568158b9550346895dc602b8/html5/thumbnails/30.jpg)
프로젝트에 대한 정보 및 설명 프로젝트에 대한 정보 및 설명
![Page 31: MFC Application Frameworks (AFX)](https://reader035.vdocuments.mx/reader035/viewer/2022081420/568158b9550346895dc602b8/html5/thumbnails/31.jpg)
응용 마법사가 만든 문서 편집기응용 마법사가 만든 문서 편집기
![Page 32: MFC Application Frameworks (AFX)](https://reader035.vdocuments.mx/reader035/viewer/2022081420/568158b9550346895dc602b8/html5/thumbnails/32.jpg)
실습 클래스마법사 (Class Wizard) 사용법
실습 클래스마법사 (Class Wizard) 사용법
![Page 33: MFC Application Frameworks (AFX)](https://reader035.vdocuments.mx/reader035/viewer/2022081420/568158b9550346895dc602b8/html5/thumbnails/33.jpg)
왼쪽 마우스 버튼을 누르면 글자 생성
클래스마법사를 사용하여 마우스의 왼쪽 버턴을 클릭 했을 때 , “ Hello! Event-Driven” 문자열 출력
![Page 34: MFC Application Frameworks (AFX)](https://reader035.vdocuments.mx/reader035/viewer/2022081420/568158b9550346895dc602b8/html5/thumbnails/34.jpg)
클래스마법사 실행
![Page 35: MFC Application Frameworks (AFX)](https://reader035.vdocuments.mx/reader035/viewer/2022081420/568158b9550346895dc602b8/html5/thumbnails/35.jpg)
클래스마법사에서 View 클래스 지정
1
3
2
![Page 36: MFC Application Frameworks (AFX)](https://reader035.vdocuments.mx/reader035/viewer/2022081420/568158b9550346895dc602b8/html5/thumbnails/36.jpg)
WM_LBUTTONDOWN 메시지 오버라이딩
![Page 37: MFC Application Frameworks (AFX)](https://reader035.vdocuments.mx/reader035/viewer/2022081420/568158b9550346895dc602b8/html5/thumbnails/37.jpg)
개별화 되는 작업 내용입력
오버라이딩된 함수 정의
![Page 38: MFC Application Frameworks (AFX)](https://reader035.vdocuments.mx/reader035/viewer/2022081420/568158b9550346895dc602b8/html5/thumbnails/38.jpg)
프로그램 실행
![Page 39: MFC Application Frameworks (AFX)](https://reader035.vdocuments.mx/reader035/viewer/2022081420/568158b9550346895dc602b8/html5/thumbnails/39.jpg)
클래스 뷰 리소스 뷰 파일 뷰
논리적인 단위 요소들에 대한 목록들을 보여 준다 .
프로젝트에서 정의되는 리소스 목록들을 보여 준다
프로젝트에 정의된 파일의 목록들을 보여 준다
참고 - 워크스페이스 창
![Page 40: MFC Application Frameworks (AFX)](https://reader035.vdocuments.mx/reader035/viewer/2022081420/568158b9550346895dc602b8/html5/thumbnails/40.jpg)
다음주 실습 내용( 다이얼로그 베이스를 이용한 사칙연산 )