본문 바로가기
카테고리 없음

C++ 윈도우 애플리케이션 프레임워크

by Sein_ 2025. 10. 27.
728x90

윈도우 프로그램

  • 윈도우 프로그램이란 Windows 운영체제에서 실행할 수 있는 응용 프로그램
  • 사용자에 의해 발생하는 이벤트에 의해 실행되며 이벤트 기반, 메시지 기반 프로그래밍이라고도 불린다.
  • 윈도우 프로그램은 여러 윈도우로 구성된다.

 

윈도우 프로그램 특징

 

장치 독립적

- 윈도우 운영체제가 하드웨어에 적당한 드라이버를 찾아서 스스로 설치하므로 하드웨어 사양을 고려하지 않아도 된다.

사용자 인터페이스(GUI)로 동작

- GUI 는 사용자가 그래픽을 통해 컴퓨터와 정보를 교환하므로 리소스(커서, 메뉴, 대화상자 등)가 필요하다.

- 소스 코드와 분리된 형태로 되어있으며 코드 이외에 리소스 정보도 작성해야한다.

메시지 구동방식으로 동작

- 메시지(Message)란, 프로그램에 변화가 생겼을 때 Windows가 프로그램에게 알리는 정보

- 일반적인 도스용 프로그램은 프로그래머가 정한 순서대로 실행된다.

- 윈도우 응용 프로그램은 운영체제로부터 전달받은 이벤트 메시지를 처리하며 동작한다.

  1. 사용자 입력, 클릭 등 외부 이벤트가 발생하면 운영체제가 관리하는 시스템 메시지 큐에 정보(메시지)가 저장된다.
  2. 각각의 응용 프로그램은 운영체제로부터 독립적인 메시지 큐를 할당받는다.
  3. 운영체제는 시스템 메시지 큐에 저장된 메시지를 적절한 응용 프로그램 메시지 큐에 보낸다.
  4. 응용 프로그램은 자신의 메시지 큐를 감시하다가 하나씩 처리하고, 없을 경우 대기한다.

 

윈도우 프로그램과 API

 

API

- API(Application Programming Interface)는 어플리케이션을 만드는 인터페이스

- 개발을 할 때, 백엔드와 프론트엔드 사이를 이 API를 통해서 연결할 수 있다.

- 즉, API는 운영체제나 프로그래밍 언어에서 제공하는 프로그램을 개발자가 사용할 수 있도록 도와준다.

 

Windows API 란

- Windows API 는 운영체제가 응용 프로그램을 위해 제공하는 함수들의 집합

- 화면에 점을 찍거나 선을 그리는 간단한 동작부터 파일 입출력, 네트워킹 같은 복잡한 기능 등 다양한 API 함수를 제공한다.

이미지 출처 - 방송통신대학교(Visual C++ 프로그래밍)

 

 

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보다 완성도와 지원이 다소 떨어짐

 

 

 

 

 

https://m.blog.naver.com/PostView.naver?blogId=hj_kim97&logNo=222659201453&referrerCode=0&searchKeyword=MFC

 

[Visual C++]윈도우 프로그래밍 개요

Visual C++ 윈도우 프로그래밍 개요 - 윈도우 프로그램이란? - 윈도우 프로그램의 특징 - 기초 용어 - 윈...

blog.naver.com

 

https://chanos.tistory.com/entry/Window-API-API-MFC%EB%9E%80-%EC%9C%88%EB%8F%84%EC%9A%B0-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EB%8F%99%EC%9E%91-%EB%B0%A9%EC%8B%9D

 

[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