관리 메뉴

ComputerVision Jack

[MFC - MFC 프로그램 구조] 본문

Image Processing/MFC Programming

[MFC - MFC 프로그램 구조]

JackYoon 2020. 8. 17. 17:59
반응형

MFC 개요

MFC는 MS에서 윈도우 응용프로그램 개발을 위해 만든 C++ 클래스 라이브러리이다. C/C++ 표준 라이브러리가 범용인 것에 반해 MFC는 윈도우 응용프로그램 개발을 위해 특화된 것이다.

 

MFC는 클래스 라이브러리가 제공하는 뛰어난 기능과 개발 도구와의 조화로운 연동을 바탕으로 프로그램 개발에 높은 생산성을 부여한다.

 

MFC 특징

1. 윈도우 응용프로그램을 작성하는데 도움을 준다.

MFC는 일반 윈도우 응요프로그램에서 거의 공통으로 사용하는 기능을 잘 검증된 C++ 클래스 라이브러리로 제공한다.

2. API를 기반으로 한 SDK 프로그램과 대등한 속도를 가진다.

MFC는 내부적으로 인라인 함수를 많이 사용하여 클래스 라이브러리가 제공하는 부가 코드로 인한 실행 속도 저하를 최소화 한다.

3.코드 크기 증가를 최소화 한다.

MFC가 제공하는 기능은 DLL 형태로 제공되므로 실행 파일 크기가 불필요하게 커지는 것을 막을 수 있다.

4. API 함수를 직접 호출할 수 있다.

MFC는 C++언어로 작성되었으므로 C언어를 기반으로 하는 API 함수를 자유롭게 호출할 수 있다.

5. C언어로 작성된 윈도우 응용프로그램을 C++ 언어로 쉽게 바꿀 수 있다.

6. SDK 프로그래밍에 대한 기반 지식을 재활용 할 수 있다.

7. C++언어를 이용하여 기존 C언어에 비해 API를 편하게 사용할 수 있다.

 

MFC 구성 요소

MFC를 구성하는 요소는 

  • MFC 클래스
  • 메크로, 전역 변수, 전역 함수

이렇게 크게 두 영역으로 나눌 수 있다.

MFC 클래스는 최상위 CObject 클래스에서 파생하는 부류와 CObject에서 파생하지 않고 독립적으로 존재하는 부류로 나뉜다.

 

CObject 클래스

CObject 클래스는 MFC 최상위 클래스로, 전체 클래스의 80% 정도가 CObject의 파생 클래스이다.

MFC 클래스는 물론이고 사용자 정의 클래스도 직접 혹은 간접적으로 CObject 클래스를 상속 받으면 서비스를 동일하게 사용할 수 있다.

CObject 서비스

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

MFC 전역 함수

MFC는 어디서든 호출해서 사용할 수 있는 전역 함수를 제공한다.

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

'Image Processing > MFC Programming' 카테고리의 다른 글

[MFC - 화면 출력]  (0) 2020.08.18
[MFC - Chapter3 연습 문제]  (0) 2020.08.17
[MFC - Chater2 연습 문제]  (2) 2020.08.06
[MFC - MFC 기초 클래스]  (0) 2020.08.05
[MFC - Chater1 연습 문제]  (0) 2020.08.03
Comments