MFC 기초 윈도우 응용프로그램 개발 간략한 역사 Microsoft Foundation Classes

Slides:



Advertisements
Similar presentations
3. 메소드와 변수 SCJP 자격증 프로젝트 발표자 : 최선웅. 1. 메 소 드 개 념 2. 메 소 드 양 식 3. 메 소 드 변 수 4. 메 소 드 예 제 5. 참 고 문 헌 / 자 료 목 차.
Advertisements

Visual C++ Programming Document/View Architecture Department of Digital Contents Sang Il Park.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
어서와 Java는 처음이지! 제20장 실전프로젝트 #2.
01_ 가상 함수를 사용한 다형성의 구현 02_ 오버라이딩
윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다.
MFC Application Frameworks (AFX)
ㅎㅎ C++ 프로그래밍의 첫 걸음 C++로 프로그래밍한다는 것의 의미 세상에서 가장 간단한 C++ 프로그램
ㅎㅎ C++ 프로그래밍의 첫 걸음 C++ 프로그래밍 기초 : 객체지향의 시작 C++로 프로그래밍한다는 것의 의미
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
Lecture 2 MFC and Application Frameworks
Lab 10 Guide: 프린터 출력 예제. 한 페이지의 그림 인쇄 (교재 24장, 쪽)
Chapter 1 윈도우 프로그래밍 들어가기 윈도우 응용 프로그램을 작성하기 위해 필요한 기본 개념을 정립하고 Visual Studio를 설치한 후 MFC 응용 프로그램 마법사를 사용하여 MFC 프로그램을 작성하는 방법을 학습한다.
Visual C++ Programming Document/View Architecture 3
최윤정 Java 프로그래밍 클래스 상속 최윤정
Java로 배우는 디자인패턴 입문 Chapter 5. Singleton 단 하나의 인스턴스
윤 홍 란 다이알로그(대화상자) 윤 홍 란
MFC를 이용한 네트워크게임 졸업 프로젝트 담당 교수 : 김재형 교수님 김 성준 김 민기.
MFC 발전 과정과 주요 특징을 개괄적으로 이해한다.
Department of Digital Contents Sang Il Park
윤 홍 란 MFC 기초 윤 홍 란
Lab 2 Guide: 교재 3장 그래픽 예제 ( 쪽) - 펜과 브러시로 그리기 - 튀는 공
- Pipeline Submission : submit - Pipeline 등록 : register
공통 컨트롤의 종류와 특징을 개관한다. 각종 공통 컨트롤의 사용 방법을 익힌다..
Lesson 5. 레퍼런스 데이터형.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
MFC Console Application
CHAPTER 02 OpenCV 개요 PART 01 영상 처리 개요 및 OpenCV 소개.
대화상자 편집기의 사용법을 익힌다. 모드형 대화상자와 비 모드형 대화상자의 차이점을 이해하고 작성 방법을 익힌다.
명품 C++ 7장 프렌드와 연산자 중복.
Visual C++ Programming Output and File
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
정적 멤버 변수/정적 멤버 함수 - friend 함수/클래스 template
C++ Espresso 제12장 템플릿.
패키지와 접근 제어 패키지에 대하여 접근 제어에 대하여.
14. 예외처리.
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
Visual C++ Programming MFC Programming의 이해
분할 윈도, 다중 뷰… 영상 통신 연구실 권 동 진 발표 일 : 04월 27일.
UDP Test 프로그램 분석.
Android studio로 Application 만들기.
C#.
13. 연산자 오버로딩.
7장 인터페이스와 추상 클래스.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
Lesson 4. 수식과 연산자.
영상처리 실습 인공지능연구실.
명품 C++ 9장 가상 함수와 추상 클래스.
GUI 소켓 애플리케이션 Chapter 08. * 학습목표 윈도우 GUI 애플리케이션의 구조와 동작 원리를 이해
CHAP 5. 레이아웃.
Lab 1 Guide: 교재 2장 DrawX ( 쪽)
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
윈도우 컨트롤.
Lab 8 Guide: 멀티스레딩 예제 2 * Critical Section을 이용한 멀티스레딩 동기화 (교재 15장, 쪽)
자바 5.0 프로그래밍.
Power Java 제11장 상속.
JA A V W. 06.
CHAP 21. 전화, SMS, 주소록.
12. 상속 : 고급.
( Windows Service Application Debugging )
Windows 프로그래밍 환경 및 MFC의 구조
중복 멤버의 처리 조 병 규 한 국 교 통 대 학 교 SQ Lab..
가장 많이 사용 Accelerator 최상위 WM_COMMAND, OLE 메시지 관련 이벤트 처리만 가능 이 클래스를 상속받아서 다른 이벤트 처리 이벤트 처리 관련 윈도우(창) 최상위 클래스 멀티 테스킹(모듈) CFrameWnd, Cview,
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
3. 모듈 (5장. 모듈).
엔코더 프로그램 설명 // 쓰레드를 사용하기 때문에 변수와 핸들을 전역변수로 지정 HANDLE hDevice;
MFC 응용 프로그램 구조 두 개의 윈도우로 구성된 일반적인 MFC 프로그램 프레임 윈도우
윈도우 운영체제와 윈도우 응용 프로그램의 특징 SDK 응용 프로그램 MFC 응용 프로그램
6 객체.
Presentation transcript:

MFC 기초 윈도우 응용프로그램 개발 간략한 역사 Microsoft Foundation Classes 연도 개발 도구 MFC 버전 주요 특징 1992 MS C/C++ 7.0 1.0 16비트 윈도우 API를 클래스화 1994 비주얼 C++ 2.0 3.0 32비트 윈도우 API로 전환, 멀티스레드 지원 1998 비주얼 스튜디오 6.0 6.0 ATL 업그레이드. MFC로 비주얼 스튜디오 6.0 개발 2005 비주얼 스튜디오 2005 8.0 Windows Forms 지원 2010 비주얼 스튜디오 2010 10.0 윈도우 7에 새로 도입된 UI 지원 2015 비주얼 스튜디오 2015 14.0 비주얼 C++에서 MFC 선택적 설치 2019 비주얼 스튜디오 2019 14.20

MFC 구성 요소 (1) MFC 구성 요소 CObject 파생 클래스: 188개 MFC 클래스 나머지: 40개 매크로, 전역 변수, 전역 함수 CObject 파생 클래스: 188개 나머지: 40개 (※MFC 6.0 기준)

MFC 구성 요소 (2) MFC 클래스 계층도

CObject 클래스 CObject 서비스 서비스 이름 기능 실행 시간 클래스 정보 프로그램 실행 중 객체 정보를 알아낸다. 동적 객체 생성 객체를 동적으로 생성한다. 직렬화 객체를 저장하거나 읽어들인다. 타당성 점검 객체 상태를 점검한다. 집합 클래스와의 호환성 서로 다른 클래스 객체를 집합 클래스에 저장할 수 있게 한다.

MFC 전역 함수 함수 이름 기능 AfxMessageBox() 메시지 상자를 표시한다. AfxGetApp() 응용 프로그램 객체의 주소를 리턴한다. AfxGetMainWnd() 메인 윈도우 객체의 주소를 리턴한다. AfxGetAppName() 응용 프로그램의 이름을 리턴한다. AfxGetInstanceHandle() 인스턴스 핸들을 리턴한다. AfxRegisterWndClass() 윈도우 클래스를 등록한다. AfxBeginThread() 스레드를 시작한다. AfxEndThread() 스레드를 종료한다.

CString 클래스 가변 길이 문자열 지원 CString 객체 생성과 초기화 프로그램 실행 중에 문자열 길이를 자유롭게 변경 가능 CString 객체 생성과 초기화 CString str = TEXT("안녕하세요."); str += TEXT(" 하하하"); CString str1; // 기본 생성자 str1 = TEXT("안녕하세요."); // 대입 연산 Cstring str2("오늘은"); // 문자열 초기화 Cstring str3(str2); // 복사 생성자 Cstring str4 = str1 + TEXT(" ") + str2 + TEXT(" 즐거운 날입니다.");

CPoint 클래스 생성자 사용 예 CPoint(int x, int y); CPoint pt1(10, 20); pt1.Offset(40, 30); // x 좌표에 40, y 좌표에 30을 더한다 pt2.Offset(20, 10); // x 좌표에 20, y 좌표에 10을 더한다 if (pt1 == pt2) cout << "두 점의 좌표가 같습니다." << endl; // OK in VS2005 else cout << "두 점의 좌표가 다릅니다." << endl;

CRect 클래스 (1) 생성자 직사각형의 폭과 높이 좌표의 포함 여부 판단 CRect(int left, int top, int right, int bottom); int CRect::Width(); int CRect::Height(); BOOL CRect::PtInRect(CPoint pt);

CRect 클래스 (2) 사용 예 CRect rect1; rect1.SetRect(0, 0, 200, 100); if (rect1 == rect2) cout << "두 직사각형의 좌표가 같습니다." << endl; else cout << "두 직사각형의 좌표가 다릅니다." << endl; CRect rect3(100, 100, 300, 200); cout << rect3.Width() << " " << rect3.Height() << endl; CPoint pt(200, 150); if (rect3.PtInRect(pt)) cout << "점이 직사각형 내부에 있습니다." << endl; cout << "점이 직사각형 외부에 있습니다." << endl;

CSize 클래스 생성자 사용 예 CSize(int x, int y); // 폭과 높이 CSize size1(100, 200); CSize size2(100, 200); cout << size2.cx << " " << size2.cy << endl; if (size1 == size2) cout << "크기가 같습니다." << endl; else cout << "크기가 다릅니다." << endl;

HelloMFC 예제 작성 (1) MFC 프로그램 기본 골격 ① 응용 프로그램 클래스 정의 ② 메인(=프레임) 윈도우 클래스 정의 ③ 응용 프로그램 객체 선언 ④ 메시지 처리용 멤버 함수 정의 응용 프로그램 클래스 (CHelloApp) 프레임 윈도우 클래스 (CMainFrame) 프레임 윈도우 생성 메시지 루프 제공 프레임 윈도우 기능 제공

HelloMFC 예제 작성 (2) Win32 프로젝트

HelloMFC 예제 작성 (2) 프로젝트 설정 변경 (프로젝트 설정, Alt+F7)

HelloMFC 예제 작성 (3) 비주얼 스튜디오 2017 화면

MFC 프로그램 기본 구조 (1) HelloMFC 예제 코드 (1/3) #include <afxwin.h> // 응용 프로그램 클래스를 상속을 통해 정의한다. class CHelloApp : public CWinApp { public: virtual BOOL InitInstance(); }; // 메인 윈도우 클래스를 상속을 통해 정의한다. class CMainFrame : public CFrameWnd { // 생성자 CMainFrame() { Create(NULL, TEXT("HelloMFC Application")); } protected: afx_msg void OnPaint(); afx_msg void OnLButtonDown(UINT nFlags, CPoint point); DECLARE_MESSAGE_MAP()

MFC 프로그램 기본 구조 (2) HelloMFC 예제 코드 (2/3) // 응용 프로그램 객체를 선언한다. CHelloApp theApp; // 1. 윈도우 클래스(종류)를 초기화하고 운영체제에 등록한다. // 3. 메시지 큐에서 메시지를 하나씩 꺼내서 처리한다. // 응용 프로그램 클래스의 멤버 함수 InitInstance()를 정의한다. BOOL CHelloApp::InitInstance() { m_pMainWnd = new CMainFrame; // 2. 윈도우를 생성하고 m_pMainWnd->ShowWindow(m_nCmdShow); // 2. 화면에 보이게 한다. return TRUE; }

MFC 프로그램 기본 구조 (3) HelloMFC 예제 코드 (3/3) // 4. 발생한 메시지의 종류에 따라 적절히 처리한다. void CMainFrame::OnPaint() { TCHAR *str = TEXT("Hello, MFC"); CPaintDC dc(this); dc.TextOut(100, 100, msg, _tcslen(str)); } void CMainFrame::OnLButtonDown(UINT nFlags, CPoint point) MessageBox(TEXT("마우스를 클릭했습니다.“), TEXT("마우스 메시지")); // 메시지맵을 선언한다. BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) ON_WM_PAINT() ON_WM_LBUTTONDOWN() END_MESSAGE_MAP()