편집을 취소할 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.
최신판 | 당신의 편집 | ||
5번째 줄: | 5번째 줄: | ||
원래 윈도우의 API는 다양한 언어에서 포팅하기 쉽게 하려고 C언어의 함수로 구성되어 있다.<ref>좀 쓰인다 하는 언어들은 C언어 함수의 바인딩을 지원한다</ref> | 원래 윈도우의 API는 다양한 언어에서 포팅하기 쉽게 하려고 C언어의 함수로 구성되어 있다.<ref>좀 쓰인다 하는 언어들은 C언어 함수의 바인딩을 지원한다</ref> | ||
하지만 이 API 함수로 코딩을 한다는 것이 쌩 노가다인지라, 네이티브하면서, 좀 더 개발하기 쉽게 하기 위해서는 C++가 딱 제격이고, API의 구조체나 함수를 모아 클래스로 만들어서 | 하지만 이 API 함수로 코딩을 한다는 것이 쌩 노가다인지라, 네이티브하면서, 좀 더 개발하기 쉽게 하기 위해서는 C++가 딱 제격이고, API의 구조체나 함수를 모아 클래스로 만들어서 라이브러리화 한 것이다. | ||
=== 메시지 맵 === | === 메시지 맵 === | ||
MFC의 가장 큰 특징이라면 이벤트 처리를 | MFC의 가장 큰 특징이라면 이벤트 처리를 할때 가상함수를 이용한 멤버함수 재정의가 아닌, 메시지 맵이라는 일종의 매크로를 이용하여 이벤트와, 그 이벤트를 처리할 멤버함수를 연결한다는 점이다. | ||
조금 이상하게 보일지는 모르지만, 수십가지의 이벤트를 가상함수로 만들 경우, 이를 위한 메모리가 소모되는 것을 막기 위해 생겼다. | 조금 이상하게 보일지는 모르지만, 수십가지의 이벤트를 가상함수로 만들 경우, 이를 위한 메모리가 소모되는 것을 막기 위해 생겼다. | ||
23번째 줄: | 22번째 줄: | ||
=== MDI === | === MDI === | ||
'''M'''ulti '''D'''ocument '''I'''nterface | '''M'''ulti '''D'''ocument '''I'''nterface | ||
여러 개의 Document Template으로 이루어져 한번에 여러 개의 문서를 사용 가능하다. 화면 분할이 가능한 편집 툴이 여기에 속한다. | 여러 개의 Document Template으로 이루어져 한번에 여러 개의 문서를 사용 가능하다. 화면 분할이 가능한 편집 툴이 여기에 속한다. | ||
대표적인 프로그램으로, [[마이크로소프트 비주얼 스튜디오|Microsoft Visual Studio]]가 있다. | 대표적인 프로그램으로, [[마이크로소프트 비주얼 스튜디오|Microsoft Visual Studio]]가 있다. | ||
38번째 줄: | 37번째 줄: | ||
== 대체재 == | == 대체재 == | ||
나온지 오래되었고 C++보다 C#을 밀고 있는 편인 | 나온지 오래되었고 C++보다 C#을 밀고 있는 편인 Microsoft에 의해 찬밥취급을 받고 있다. 따라서 새로운 프로젝트일 경우 GUI를 구성할 때 다음과 같은 대체재들이 존재한다. | ||
* 윈도우에서만 동작한다면 C#의 Winform이나 WPF가 있다, Winform은 MFC처럼 Windows API를 래핑한 형태에 더 발전된 구조를 가지고 있고, WPF는 XML를 기반으로 윈도우를 디자인하고 하드웨어 가속을 받는 Direct2D로 컨트롤을 그린다. 덕분에 컨트롤을 꾸밀 수 있는 기능이 강력하다. 혹은 | * 윈도우에서만 동작한다면 C#의 Winform이나 WPF가 있다, Winform은 MFC처럼 Windows API를 래핑한 형태에 더 발전된 구조를 가지고 있고, WPF는 XML를 기반으로 윈도우를 디자인하고 하드웨어 가속을 받는 Direct2D로 컨트롤을 그린다. 덕분에 컨트롤을 꾸밀 수 있는 기능이 강력하다. 혹은 Microsoft에서 강력하게 밀고 있는 유니버설 윈도우 앱도 괜찮다. 이건 WPF와 비슷한 구조로 윈도우를 디자인한다. | ||
* 크로스플랫폼으로 동작하려 한다면, C++에서는 [[QT]]나 | * 크로스플랫폼으로 동작하려 한다면, C++에서는 [[QT]]나 [[wxWidgets]], C언어에서는 GTK+가 있다. | ||
* Java의 Swing이나 AWT는...... 잊어버리자...... | * Java의 Swing이나 AWT는...... 잊어버리자...... | ||
[[추가바람]] | |||
{{각주}} | {{각주}} | ||
{{프로그래밍}} | {{프로그래밍}} | ||
[[분류:C++ 라이브러리]] | [[분류:C++ 라이브러리]] | ||