윈도우 프로그램
- 윈도우 프로그램이란 Windows 운영체제에서 실행할 수 있는 응용 프로그램
- 사용자에 의해 발생하는 이벤트에 의해 실행되며 이벤트 기반, 메시지 기반 프로그래밍이라고도 불린다.
- 윈도우 프로그램은 여러 윈도우로 구성된다.
윈도우 프로그램 특징
장치 독립적
- 윈도우 운영체제가 하드웨어에 적당한 드라이버를 찾아서 스스로 설치하므로 하드웨어 사양을 고려하지 않아도 된다.
사용자 인터페이스(GUI)로 동작
- GUI 는 사용자가 그래픽을 통해 컴퓨터와 정보를 교환하므로 리소스(커서, 메뉴, 대화상자 등)가 필요하다.
- 소스 코드와 분리된 형태로 되어있으며 코드 이외에 리소스 정보도 작성해야한다.
메시지 구동방식으로 동작
- 메시지(Message)란, 프로그램에 변화가 생겼을 때 Windows가 프로그램에게 알리는 정보
- 일반적인 도스용 프로그램은 프로그래머가 정한 순서대로 실행된다.
- 윈도우 응용 프로그램은 운영체제로부터 전달받은 이벤트 메시지를 처리하며 동작한다.
- 사용자 입력, 클릭 등 외부 이벤트가 발생하면 운영체제가 관리하는 시스템 메시지 큐에 정보(메시지)가 저장된다.
- 각각의 응용 프로그램은 운영체제로부터 독립적인 메시지 큐를 할당받는다.
- 운영체제는 시스템 메시지 큐에 저장된 메시지를 적절한 응용 프로그램 메시지 큐에 보낸다.
- 응용 프로그램은 자신의 메시지 큐를 감시하다가 하나씩 처리하고, 없을 경우 대기한다.
윈도우 프로그램과 API
API
- API(Application Programming Interface)는 어플리케이션을 만드는 인터페이스
- 개발을 할 때, 백엔드와 프론트엔드 사이를 이 API를 통해서 연결할 수 있다.
- 즉, API는 운영체제나 프로그래밍 언어에서 제공하는 프로그램을 개발자가 사용할 수 있도록 도와준다.
Windows API 란
- Windows API 는 운영체제가 응용 프로그램을 위해 제공하는 함수들의 집합
- 화면에 점을 찍거나 선을 그리는 간단한 동작부터 파일 입출력, 네트워킹 같은 복잡한 기능 등 다양한 API 함수를 제공한다.

Windows API는 가장 기본적인 베이스이며, MFC는 Windows API의 1세대 프레임워크
윈도우 프로그램 개발 방식
Windows API (1세대)
- SDK(Software Development Kit)란, 운영체제가 제공해주는 함수를 이용해 응용 프로그램을 개발할 수 있도록 구성된 개발 도구 모음
- Windows API는 마이크로소프트사에서 제공하는 SDK를 통해 프로그램을 작성할 수 있도록 도와준다.
- C언어 기반의 함수 라이브러리로, 모든 윈도우 프로그래밍 환경에서 사용 가능하다.
MFC 개발 방식 (2세대)
- MFC(Microsoft Foundation Class Library)는 Windows API를 C++ 클래스로 감싼 객체지향 프레임워크
- 내부적으로는 Windows API를 사용하지만, 클래스로 구성되어 객체지향적인 프로그래밍이 가능하도록 설계되어 있다.
- Windows API와 MFC 모두 윈도우 환경에서의 응용 프로그램 개발에 사용된다.
MFC 이후 최신 개발 방식
> .NET Framework (WinForms, WPF 등) (3세대)
- 2000년대 초 마이크로소프트가 MFC의 복잡함을 해결하기 위해 만든 새로운 플랫폼
- CLR(Common Language Runtime) 위에서 동작하는 관리 코드 기반 프레임워크
- WinForms: Windows API를 더 간단히 쓸 수 있는 .NET GUI 라이브러리
- WPF: 그래픽·애니메이션 중심의 XAML 기반 UI 프레임워크
- 내부적으로는 여전히 Win32 API 호출
> 현대 프레임워크들 (4세대)
- 플랫폼 독립성, 선언적 UI, 크로스플랫폼 중심
- UWP / WinUI / MAUI → Microsoft의 최신 Windows용 UI 프레임워크
- Qt → C++ 기반, 크로스플랫폼
- Electron / Flutter for Windows → 웹·모바일 기술을 PC로 확장
- 내부적으로 Windows API나 Windows Runtime API(WinRT) 를 통해 운영체제 자원에 접근
C++ 윈도우 GUI 프레임워크 특징과 장단점
> Visual C++ MFC 프레임워크
- C++ 라이브러리로, Windows API(Win32)를 기반으로 함.
- Microsoft에서 공식 제공하는 Windows 전용 GUI 프레임워크.
- Visual Studio와 완벽하게 통합됨.
[ 장점 ]
- 네이티브 성능이 뛰어나고 안정적
- 풍부한 기업용 레거시 코드와 자료 존재.
- 시스템 자원 접근이 용이
[ 단점 ]
- 구조가 복잡하고 코드가 장황함.
- 구식 문법으로 현대적 C++과의 궁합이 낮음.
- Windows 전용으로, 다른 OS 지원 불가.
> Qt 프레임워크
- C++ 기반의 대표적인 크로스플랫폼 GUI 프레임워크.
- QML, 시그널/슬롯 구조 등 현대적 UI 구성 지원.
[ 장점 ]
- Windows, macOS, Linux, 모바일 등 폭넓은 플랫폼 지원
- 풍부한 위젯과 QML을 통한 현대적 UI 설계 가능
[ 단점 ]
- 빌드 크기가 크고 초기 설정이 복잡함.
- 학습 난이도가 높은 편이다.
- 상용 배포 시 라이선스 제약이 있음.
> Embarcadero C++ Builder VCL 프레임워크
- Delphi 기술을 기반으로 한 Windows 전용 RAD 프레임워크.
- 시각적 GUI 디자이너와 다양한 컴포넌트 제공
[ 장점 ]
- 드래그 앤 드롭으로 빠른 개발 가능
- 개발 속도가 빠르고 세련된 인터페이스 제작이 쉽다.
[ 단점 ]
- 상용 제품이며, 런타임이 다소 무겁다.
- 표준 C++과의 통합성이 낮다.
> OWLNext 프레임워크
- Borland의 Object Windows Library(OWL)를 계승한 오픈소스 프레임워크.
- 전통적인 C++ 객체지향 구조를 유지
[ 장점 ]
- 경량이며 레거시 코드 유지보수에 적합
- 오픈소스 커뮤니티에 의해 유지됨
[ 단점 ]
- 오래된 설계로 최신 C++ 표준 지원이 제한적
- 문서와 개발 지원이 부족
> wxWidgets 프레임워크
- C++ 기반의 오픈소스 크로스플랫폼 GUI 프레임워크.
- 각 운영체제의 네이티브 위젯을 직접 사용
[ 장점 ]
- 무료이며, 다양한 os 지원
- 각 플랫폼 별 고유 UI를 제공
- 가볍고 비교적 단순한 구조
[ 단점 ]
- 디자인 도구가 부족하고 코드 중심의 개발이 필요
- Qt보다 완성도와 지원이 다소 떨어짐
[Visual C++]윈도우 프로그래밍 개요
Visual C++ 윈도우 프로그래밍 개요 - 윈도우 프로그램이란? - 윈도우 프로그램의 특징 - 기초 용어 - 윈...
blog.naver.com
[Windows API] API, MFC란, 윈도우 프로그래밍 동작 방식
목표 Window API를 사용하기 위한 기초 배경을 쌓도록 하겠습니다. 목차 클릭하면 해당 목차로 이동합니다. API와 MFC 윈도우 프로그래밍 동작 방식 정리 개요 윈도우즈 프로그래밍이라는 수업을 듣
chanos.tistory.com
https://dawitblog.tistory.com/3
[C++,MFC]MFC 프로그래밍이란 무엇인가? + 기본 컨트롤러
Java 해야하는데 학교에서는 C++을 가르친다. 그리고 이번에 교수님이 C++과 MFC라이브러리를 이용한 윈도우 프로그램에 대하여 설명해 주셨다. 솔직히 조금 뜬금없었다. MFC가 뭐지? 갑자기 이걸 왜
dawitblog.tistory.com