wxWidgets

 

wxWidgets
[image]
저작자
Julian Smart
개발자
커뮤니티
초기 릴리즈
1992년
현재 버전
3.0.5(LTS), 3.1.4]
언어
C++11
OS
크로스플랫폼
라이센스
wxWindows Library Licence
홈페이지
https://www.wxwidgets.org/
1. 개요
2. 특징
2.1. 네이티브 UI
2.2. 크로스플랫폼
2.2.1. OS
2.2.2. 컴파일러 지원
2.3. 기타
3. 타 라이브러리와의 링크
4. 타 언어로의 바인딩
5. wxWidgets를 사용하는 프로그램

[clearfix]

1. 개요


wxWidgets는 Julian Smart가 만든 C++ 위젯 툴킷이다. 마이크로소프트사의 MFC 대체 라이브러리로서 출시되었으며 오래된 MFC와는 달리 크로스 플랫폼을 지원한다.
초기에는 이름이 wxWindows 이었으나, MS사의 상표명 존중 요청으로 2004년부터 wxWidgets으로 이름을 변경하였다.[1]

2. 특징



2.1. 네이티브 UI


Qt, FLTK, GTK+와 같은 UI 라이브러리의 경우 각각의 위젯을 자체적인 모양으로 렌더링 하여 브러시를 그리는 방식이지만 wxWidgets은 각 OS의 네이티브 GUI API를 사용해 UI를 그리므로 네이티브 UI의 동일한 모양과 성능 정도를 내기에 적합하다. 사무 비지니스 앱에 적합한 UI 툴킷이다. 각 OS의 네이티브 UI만으로 변환하여 사용하다보니 컴퓨터 게임 UI와 같은 프리스타일 인터페이스 디자인에는 사용하기가 어렵다.
한계점도 있다. 윈도우에서 (File, Edit, View 등으로 대표되는) 프로그램 상단 메뉴의 배경에 어두운 색를 적용할 수 없는 것과 같은 것들이 그 예다. 이는 윈도우는 아직도 블랙 계통 테마를 완전히 지원하지 않고 있기 때문이다.[2] 다크 테마 API를 정식으로 제공하는 macOS나 GTK3 기반의 리눅스 데스크탑의 경우 지원한다.
타 라이브러리들처럼 wxWidgets 또한 시스템의 네이티브 API를 사용하지 않고 그리고자 한다면 wxUniversal 옵션을 주어 컴파일 하면 위젯을 직접 그리게 할 수 있다.

2.2. 크로스플랫폼



2.2.1. OS


wxWidgets은 많은 플랫폼을 지원한다.
Qt와 동일하게 이미지 처리, 사운드 처리 등 많은 내장된 라이브러리의 추상화가 되어 있어 코드의 수정 없이 쉬운 크로스 플랫폼 개발을 가능하게 한다.
  • Windows
    • Windows 95+ - 3.1.0 부터 95, 98의 DOS 지원은 종료되었다.
    • Windows CE
  • Mac OS X
    • Carbon - 현재 Deprecated 됨
    • Cocoa
  • Linux
    • GTK 2, 3
    • X11
    • Motif
  • BSD
    • NetBSD
    • FreeBSD
    • OpenBSD
  • Solaris
  • HP-UX
  • AIX
  • UNIX
    • SCO
  • OS/2
그 외 Android와 같은 많은 비공식 포팅들 또한 존재한다.

2.2.2. 컴파일러 지원


  • MS Visual Studio 5+ - 3.1.0부터는 Visual Studio 9 이하와 같은 구형 컴파일러의 지원이 종료되었다.
  • Intel C/C++ (icc)
  • Sun CC for Linux
  • LLVM / Clang / Clang++
  • GCC - MinGW
  • BCC (C++ Builder)
  • Cygwin
  • Watcom C++ Compiler

2.3. 기타


  • Windows 에서의 HiDPI 지원
  • XML 리소스 컴파일 - wxSmith나 wxFormbuilder를 사용하여 WYSIWYG로 개발을 하지 않는 이상 기본적으로 wxWidgets은 날코딩으로 UI를 짜는것이 일반적이다. 그렇지만 위의 WYSIWYG 툴을 사용하여 개발을 하여도 프로그램의 루틴과 wxWidgets의 루틴이 섞이게 되는것은 피할 수 없는 일이기에 XML로 짜거나 wxFormbuilder같은 WYSIWYG툴을 사용하여 XML로 UI를 제작하는 경우 UI의 코드와 프로그램의 백엔드를 완벽하게 분리해 둘 수 있게 된다.

3. 타 라이브러리와의 링크



4. 타 언어로의 바인딩



5. wxWidgets를 사용하는 프로그램



[1] https://www.wxwidgets.org/about/name-change/[2] Undocumented된 심볼을 Ordinal를 직접 불러서 사용하는 것이 가능하지만 정식적인 방법이 아니다.