||||<tablealign=right> wxWidgets || ||||<:> [[파일:external/avatars2.githubusercontent.com/791023?v=3&s=200.png|width=120px]] || || 저작자 || Julian Smart || || 개발자 || 커뮤니티 || || 초기 릴리즈 || 1992년 || || 현재 버전 || 3.0.5(LTS), 3.1.4] || || 언어 || C++11 || || OS || 크로스플랫폼 || || 라이센스 || wxWindows Library Licence || || 홈페이지 || [[https://www.wxwidgets.org/]] || [목차] [clearfix] == 개요 == wxWidgets는 Julian Smart가 만든 [[C++]] 위젯 툴킷이다. 마이크로소프트사의 [[MFC]] 대체 라이브러리로서 출시되었으며 오래된 [[MFC]]와는 달리 크로스 플랫폼을 지원한다. 초기에는 이름이 wxWindows 이었으나, MS사의 상표명 존중 요청으로 2004년부터 wxWidgets으로 이름을 변경하였다.[* [[https://www.wxwidgets.org/about/name-change/]]] == 특징 == === 네이티브 UI === [[Qt(프레임워크) | Qt]], FLTK, GTK+와 같은 UI 라이브러리의 경우 각각의 위젯을 자체적인 모양으로 렌더링 하여 브러시를 그리는 방식이지만 wxWidgets은 각 OS의 네이티브 GUI API를 사용해 UI를 그리므로 네이티브 UI의 동일한 모양과 성능 정도를 내기에 적합하다. 사무 비지니스 앱에 적합한 UI 툴킷이다. 각 OS의 네이티브 UI만으로 변환하여 사용하다보니 컴퓨터 게임 UI와 같은 프리스타일 인터페이스 디자인에는 사용하기가 어렵다. 한계점도 있다. 윈도우에서 (File, Edit, View 등으로 대표되는) 프로그램 상단 메뉴의 배경에 어두운 색를 적용할 수 없는 것과 같은 것들이 그 예다. 이는 윈도우는 아직도 블랙 계통 테마를 완전히 지원하지 않고 있기 때문이다.[* Undocumented된 심볼을 Ordinal를 직접 불러서 사용하는 것이 가능하지만 정식적인 방법이 아니다.] 다크 테마 API를 정식으로 제공하는 [[macOS]]나 GTK3 기반의 [[리눅스]] 데스크탑의 경우 지원한다. 타 라이브러리들처럼 wxWidgets 또한 시스템의 네이티브 API를 사용하지 않고 그리고자 한다면 wxUniversal 옵션을 주어 컴파일 하면 위젯을 직접 그리게 할 수 있다. === 크로스플랫폼 === ==== OS ==== wxWidgets은 많은 플랫폼을 지원한다. [[Qt(프레임워크)|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]]와 같은 많은 비공식 포팅들 또한 존재한다. ==== 컴파일러 지원 ==== * 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 === 기타 === * Windows 에서의 [[HiDPI]] 지원 * [[XML]] 리소스 컴파일 - wxSmith나 wxFormbuilder를 사용하여 [[WYSIWYG]]로 개발을 하지 않는 이상 기본적으로 wxWidgets은 [[날코딩]]으로 UI를 짜는것이 일반적이다. 그렇지만 위의 WYSIWYG 툴을 사용하여 개발을 하여도 프로그램의 루틴과 wxWidgets의 루틴이 섞이게 되는것은 피할 수 없는 일이기에 [[XML]]로 짜거나 wxFormbuilder같은 WYSIWYG툴을 사용하여 XML로 UI를 제작하는 경우 UI의 코드와 프로그램의 백엔드를 완벽하게 분리해 둘 수 있게 된다. == 타 라이브러리와의 링크 == * [[Qt(프레임워크) | Qt]] - 개발중 * [[WebKit]] == 타 언어로의 바인딩 == * [[Ada]] * [[Basic]] * [[D]] * [[Delphi]]/[[Pascal]] * [[Erlang]] * [[http://www.rapideuphoria.com/ | Euphoria]] * [[Go(프로그래밍 언어)|Go]] * [[Haskell]] * [[Java]] * [[JavaScript]] * [[Lua]] * [[Max]] * [[Net]] * [[Perl]] * [[PHP]] * [[Pike]] * [[Python]] 2K, 3K * [[Ruby]] * [[Rust]] * [[Squeak]] * [[Swift(프로그래밍 언어)|Swift]] - [[https://swiftforwindows.github.io/|#]] == wxWidgets를 사용하는 프로그램 == * [[Audacity]] * [[BitTorrent]] * [[BOINC|BOINC@HOME]] * [[Code::Blocks]] * [[CodeLite]] * [[Corona]] Image Editor * [[FileZilla]] * KiCad * [[PostgreSQL]] Stack builder * [[PCSX2]] [[분류:라이브러리]]