본문 바로가기

프로그래밍/취업준비(개인공부)

[MFC] MFC란? 기초부터 개념잡기 및 용어정리

MFC란

MFC(Microsoft Foundation Class Library)란 마이크로 소프트에서 만든 Window API를 C++로 둘러싼 Library입니다. 클래스들은 윈도의 공용 컨트롤스마트 포인터를 사용하는 창 개체입니다.


- API(Application Programming Interface): 응용프로그래밍 인터페이스로, 응용프로그램에서 사용할 수 있도록 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 말합니다.
  주로 파일제어, 창제어, 화상처리, 문자제어 등을 위한 인터페이스 제공

- 응용프로그램(Application): 응용프로그램은 사용자등에게 특정한 기능을 수행하도록 설계된 프로그램입니다. 예를들어 워드프로세서, 데이터베이스프로그램, 웹브라우저, 개발도구 등이 응용프로그램이라고 할 수 있습니다.

대표적인 응용프로그램으로 마이크로소프트사의 오피스가 되겠습니다


응용프로그램은 컴퓨터의 운영체계와 다른 지원프로그램들을 서비스로 사용하며 이때 다른프로그램에 공식적으로 작업을 요청하거나 통신하는 수단으로 API라는 것을 사용합니다


-Window API: 마이크로 소프트 윈도우 운영체제들이 사용하는 API이며, C/C++ 프로그램에서 직접 운영체제와 상호 작용할 수 있도록 만들어졌으며, 그보다 더 낮은 수준의 제어는 Ntdll.dll을 사용한 낮은 수준의 DLL로 가능합니다. (DLL 설명 보러가기 클릭)


Window API가 제공하는 기능은 총 8가지가 있습니다

1) 기본서비스

이용할 수 있는 중요한 리소스를 윈도우 시스템에서 사용할 수 있게 도와줍니다.

파일시스텀, 장치, 프로세스, 스레드, 오류처리 등.

이러한 기능들을 16bit: kernel.exe, krnl286.exe, krnl386.exe

32bit: kernel32.dll 파일 에 상주하게 됩니다.


2) 고급서비스

부가 기능을 커널에 사용할 수 있게 도와줍니다. 

윈도우 레지스트리, 시스템종료/다시시작or중단, 윈도우 서비스 시작/중지/만들기, 사용자계정 만들기 등.

이러한 기능은     32bit: advapi32.dll에 상주합니다


3) 그래픽 장치 인터페이스(GDI: Graphics Device Interface)

출력되는 그래핃 컨텐츠를:  모니터, 프린터등 출력장치에 전달하는 기능을 제공

16bit: gdi.exe

32bit: gdi.dll 파일에 상주합니다.

커널모드 GDI 지원은 그래픽드라이버와 직접 통신하는 win32lk.sys가 제공합니다


4) 사용자 인터페이스

화면의 창, 단추, 스크롤바와 같이 기본적인 컨트롤을 만들어 관리, 마우스와 키보드등 입력장치로 입력받는 기능, 윈도우의 GUI와 연동하는 기능을 제공)

16bit: user.exe

32bit: user32.dll

XP이후로 기본 컨트롤은 공통컨트롤과 함께 comctl32.dll에 상주합니다


5) 공통 대화 상자 라이브러리

응용 프로그램에 파일 열기 및 저장, 색 및 글꼴 선택 등을 위한 표준 대화상자 제공

16bit: commdlg.dll

32bit: comdlg32.dll

라이브러리는 API의 "사용자 인터페이스" 집합에 들어있습니다


6) 공통 컨트롤 라이브러리

응용프로그램이 운영체제가 제공하는 일부 고급 컨트롤에 접근할 수 있게 도와줍니다.

Ex) 상태표시줄, 진행 표시줄, 도구모음, 탭

이 라이브러리는 DLL파일에 상주

16bit: commctrl.dll

32bit: comctl32.dll 에 상주

라이브러리는 API의 "사용자 인터페이스 집합에 들어있습니다


7) 윈도 셸(Window shell)

윈도 API의 구성 요소는 응용 프로그램이 운영 체제 shell이 제공하는 기능에 접근하고 변경하고 강화할 수 있게 도와줍니다.

16bit: shell.dll

32bit: shell32.dll 에 상주

라이브러리는 API의 "사용자 인터페이스 집합에 들어있습니다


8) 네트워크 서비스

다양한 네트워킹 기능을 운영체제에 제공합니다

Ex) 넷바이오스, 윈속, NetDDE, RPC등을 포함


- 스마트 포인터: 메모리 누수를 막기위한 기술

메모리 누수: 메모리예약(동적할당) 한 후에 사용이 끝나면 힙에게 다시 돌려줘야 하는데 돌려주지 않고 계속 버티는 경우라고 합니다.

스마트포인터 출처 클릭