When developing embedded code for devices with non-trivial user interfaces, it often pays off to build a prototype (virtual prototype) of the embedded system on a PC. The strategy is called "dual targeting" because you develop software on one machine (e.g., Windows PC) and run it on a deeply embedded target, as well as on the PC. Dual targeting is the primary strategy for avoiding the "target system bottleneck" in agile embedded software development.
QWin is a free GUI toolkit for prototyping embedded systems on Windows in the C or C++ programming language, including building realistic embedded front panels consisting of LCDs (both graphic and segmented), LEDs, buttons, knobs, sliders, etc. The implementation is based on the raw Win32 API to provide simple direct mapping to C/C++ for easy integration with your embedded code.
QWin is included in the QTools Collection in the sub-directory qtools/qwin/ and consists of just two files: qwin_gui.h containing the interface and qwin_gui.c providing the implementation. You use QWin by including these files in your projects.
Currently, QWin provides the following facilities:
The QWin GUI Prototyping Toolkit is described in the Application Note: Application Note: QWIN GUI Kit for Prototyping Embedded Systems on Windows↑.
Regarding the size and complexity of the "QWin GUI Toolkit", the implementation of the aforementioned GUI elements takes only about 250 lines of C. The example with all sources of input and a lot of comments amounts to some 300 lines of C. The toolkit has been tested with the free MinGW compiler (included in the QTools Collection for Windows), the free Visual C++↑.