Jan van Wijk
TXWIN, windowing UI library
This is the complete multi-platform windowing library developed for the DFSee program,
offered in a ZIP-file distribution that contains all sources, makefiles and several
sample programs with source, to demonstrate some of the library features.
As of version 7, TxWin is covered by the fairly liberal MIT open source license .
TxWin multiplatform text mode windowing library (11 Mb)
The library download includes support for the following five target platforms:
- OS/2 including ArcaOS and eComstation, running in a VIO window or full-screen
- Win32 from XP to Windows-10, running in the Console (cmd.exe or PowerShell)
- Dos32 a 32-bit DOS-extended version running on most DOS versions, like FreeDOS
- Linux 32-bit, running in X-terminal (with mouse) as well as the full-screen Console (no mouse)
- macOS a 64-bit version running in the standard 'Terminal', iTerm and others
The macOS version can be compiled with either GCC 4.2 (32-bit) or the later LLVM/Clang
compilers (64-bit target) that come with the standard Apple Xcode development environment
(needs commandline tools). Corresponding makefiles are included with the library
and sample program sources.
It consists of a single statically linked library file (libtx*.a)
either as a 'release' or a 'debug' version
and supports full source-level debugging using the Xcode environment
All others are compiled with the OpenWatcom compiler (stable 1.9 version, or newer 2.0 one)
and the compiler configuration scripts as well as some build scripts are included. Building the library
has been tested on OS/2 and Windows only, but may work with some build-modifications on
other platforms supporting OpenWatcom, like FreeDOS and Linux.
On these platforms the library consists of a single statically linked library file (tx*.lib)
either as a 'release' or a 'debug' version for source-level debugging
with the OpenWatcom debugger.
The included 'TXT' sample program is a test program that shows a lot of what the library can do, see the first screenshot.
Pre-compiled binaries for each platform are included in the distribution ZIP, so you can see how it behaves without needing
to have the build environment working.
Library windowing features
The library supports a windowing environment modelled after the familiar OS/2 PM
and Windows message based window-systems, including a single message-queue and
familiar messages like WM_CREATE, WM_PAINT, WM_COMMAND, WM_CHAR and many more.
Created windows/dialogs can have their own message-handling-procedures (WinProc)
to implement specific behaviour on top of the existing library functionality.
In contrast to those GUI environments, the display output is text-based,
using plain ASCII characters, it is not a graphical interface (GUI)
The interface is operated by both keyboard and mouse on all
platforms, and also integrates with the OS clipboard
The most important user interface elements supported are:
- Desktop and frame/canvas windows, to hold other interface elements
- Text view windows, for help information or other application specific contents
- Entryfields, for single line text input
- Text fields, for single line text output
- A scrollable multi-line text-output window will (ANSI) color support
- Buttons, in various styles like Push-Button, CheckBox and Radio-Button
- Listboxes, implementing selection from a series of text items, for menus and more
- Menus, in the form of a menu-bar and pull-downs as well as seperate pop-up menus
- Standard dialogs, like File-Open/Save, MessageBox, Confirmation and Value-entry
- Context sensitive help, with search capability, see screenshot on the right
- A HEX-edit popup Dialog, to view/edit memory buffers (binary-file/sector editor)
The 'TXT' sample program is a test program that shows a lot of what the library can do, see screenshot
Library generic features
Apart from the windowing specific features, the library also has a lot generic features:
- string handling
- file handling
- directory traversal
- block-structured scripting language
- builtin generic commands
- execution of external (OS) command with output redirection into a window
- automatic logging of all output (to the scrollable window) to a file
- functional tracing of executed code for fast and convenient bug-hunting without the need for a debugger
- and more ...
The library includes several sample programs to demonstrate the features,
but probably the best way of seeing what the library can do is evaluate
the full DFSee program ...
User feedback and support
Feedback on the library is much appreciated, and you can get some help in using it
(on a best effort basis) by contacting me at:
Of course contributions in the form of bug fixes or new functionality are welcome as well.
Presentations on TxWin, including PDF downloads
TXWIN, windowing UI library
Created by Jan van Wijk: May 2005, last update: 2021-March-1