Description
The Windows Template Framework (WTF) is a lightning fast, light-weight, header-only GUI library for Windows written in C++11. It's designed to be easy to use and quick to setup for a quick-and-dirty Windows GUI application. The architecture is highly modular with maximum code reuse by leveraging modern template meta-programming techniques.
WTF alternatives and similar libraries
Based on the "GUI" category.
Alternatively, view WTF alternatives based on common mentions on social networks and blogs.
-
imgui
Dear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies -
webview
Tiny cross-platform webview library for C/C++/Golang. Uses WebKit (Gtk/Cocoa) and Edge (Windows) -
libui
Simple and portable (but not inflexible) GUI library in C that uses the native GUI technologies of each platform it supports. -
Stacer
Linux System Optimizer and Monitoring - https://oguzhaninan.github.io/Stacer-Web -
FTXUI
Features: - Functional style. Inspired by [1] and React - Simple and elegant syntax (in my opinion). - Support for UTF8 and fullwidth chars (→ 测试). - No dependencies. - Cross platform. Linux/mac (main target), Windows (experimental thanks to contributors), - WebAssembly. - Keyboard & mouse navigation. Operating systems: - linux emscripten - linux gcc - linux clang - windows msvc - mac clang -
SixtyFPS
Slint is a toolkit to efficiently develop fluid graphical user interfaces for any display: embedded devices and desktop applications. We support multiple programming languages, such as Rust, C++ or JavaScript. [Moved to: https://github.com/slint-ui/slint] -
GacUI
GPU Accelerated C++ User Interface, with WYSIWYG developing tools, XML supports, built-in data binding and MVVM features. -
Turbo Vision
A modern port of Turbo Vision 2.0, the classical framework for text-based user interfaces. Now cross-platform and with Unicode support. -
FLTK
FLTK - Fast Light Tool Kit - https://github.com/fltk/fltk - cross platform GUI development -
SOUI
SOUI是目前为数不多的轻量级可快速开发window桌面程序开源DirectUI库.其前身为Duiengine,更早期则是源自于金山卫士开源版本UI库Bkwin.经过多年持续更新方得此库 -
PDCurses
PDCurses - a curses library for environments that don't fit the termcap/terminfo model. -
cuda-api-wrappers
Thin C++-flavored header-only wrappers for core CUDA APIs: Runtime, Driver, NVRTC, NVTX. -
xtd
Free open-source modern C++17 / C++20 framework to create console, GUI (forms like WinForms) and unit test applications on Microsoft Windows, Apple macOS and Linux. -
CTPG
Compile Time Parser Generator is a C++ single header library which takes a language description as a C++ code and turns it into a LR1 table parser with a deterministic finite automaton lexical analyzer, all in compile time. -
ncurses
snapshots of ncurses - see http://invisible-island.net/ncurses/ncurses.faq.html (no pull requests are accepted) -
Clip Library
Cross-platform C++ library to copy/paste clipboard content -
fox-toolkit
Unofficial Zenotech specific mirror of fox-toolkit; please refer to upstream site for latest version -
NotificationManager
A thread-safe, easy-to-use, utility for sending and receiving notifications. It allows you to decouple different modules of your application. -
static_string
Experimental compile-time string manipulation C++17 library -
QwtPlot3D
A feature-rich Qt/OpenGL-based C++ programming library, providing essentially a bunch of 3D-widgets. [zlib]
ONLYOFFICE Docs — document collaboration in your environment
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of WTF or a related project?
Popular Comparisons
README
Introduction {#mainpage}
The Windows Template Framework (WTF) is a lightning fast, light-weight, header-only GUI library for Windows written in C++11. It's designed to be easy to use and quick to setup for a quick-and-dirty Windows GUI application. The architecture is highly modular with maximum code reuse by leveraging modern template meta-programming techniques.
WTF is largely an architectural and feasibility experiment. Maximum reuse is one of the motivating factors behind this library. There are many GUI toolkits around and they all seem to share the trait of code bloat and complex configuration. GUI toolkits present an interesting challenge because the various components and widgets have a mix-and-match composition of behaviors. For example, a button contains a label that needs to produce click events while a drop-down box has several labels, produces click events and needs to editable, while a text box is editable but produces no click events. The various GUI components share a hodge-podge of behaviors and a variety of programming techniques have been employed in toolkits to minimize the maintenance effort but most fall short IMO.
WTL, for example, should be more properly named Windows Macro Library than a template library but does a fairly good job at reducing duplication. wxWidgets has lots of duplicate code but their goal is a cross platform toolkit. It's clumsy and difficult to learn. Qt has a nice programmer's interface but dont peek behind the sheets if you want to keep your lunch down. WinForms is easy to code but requires a terrabyte of framework libraries, CLI interop is required to do anything native and its slow as hell. GTK is for linux. The proper response to the current state of native GUI toolkits on Windows is WTF!
Getting Started
Add the wtf folder to the project's include path and include wtf.hpp
in a compilation unit. That's it! There is nothing to compile (except for your application.) and there are no additional binaries to link or distribute.
To generate the documentation you will need:
- Cmake to generate example programs and configure the docs.
- Doxygen to generate source documentation.
- Graphviz (optional) to generate charts and graphs in the documentation.
The first place to visit for learning WTF is the documentation. [Using WTF](using_wtf.md) gives an overview of how to build a user interface with WTF.
For a deep dive into the structure and architecture take a look at [The Hierarchy Generator Pattern](hierarchy_gen.md) which is the backbone of the framework. WTF uses a specialized hierarchy generator pattern for [Message Handling](message_handling.md).
Documentation Note
Docs are generated with Doxygen which has trouble handling the hierarchy generator pattern so doesn't recognize the inheritance. The expansive inheritance of this library is its purpose, therefore rendering the documentation of little use without modifications. Some preprocessor macro trickery is used in the code to generate documentation which illustrates the inherited members. However, doing so produces misleading UML that illustrates multiple-inheritance. This is a doxygen bug; multiple inheritance is not used in WTF.