wxWindows was developed to provide a cheap and flexible way to maximize investment in GUI application development. While a number of commercial class libraries already exist for cross-platform development (such as CommonView and XVT++), none met all of the following criteria:
As public domain software and a project open to everyone, wxWindows has benefited from comments, ideas, bug fixes, enhancements and the sheer enthusiasm of users, especially via the InterNet. This gives wxWindows a certain advantage over its commercial brothers, and a robustness against the transience of one individual or company. This openness and availability of source code is especially important when the future of thousands of lines of application code may depend upon the longevity of the underlying class library. wxWindows is likely to evolve to allow more sophisticated GUI use on an increasing number of platforms.
In writing wxWindows, completeness has inevitably been traded for portability and simplicity of programming. For projects which do not need uncompromisingly polished interfaces, this tradeoff seems well worthwhile given the productivity benefits.
wxWindows currently maps to four native APIs: XView (Open Look), Motif, Windows 3.1 and Windows NT. Under UNIX, wxWindows has been tested most thoroughly on Sun workstations, but users have confirmed that it compiles on other machines (including some running UNIX System V). This covers a very large proportion of machines in use today.
In addition to GUI needs, wxWindows also supports a subset of DDE (Dynamic Data Exchange) on both the PC and UNIX. A simple object-oriented model of clients, servers and connections is used, making it easy to write programs which communicate synchronously. Under Windows, other non-wxWindows programs may still communicate with wxWindows programs and vice versa; under UNIX, non-wxWindows programs just have to conform to a simple protocol when communicating via sockets with wxWindows programs.
On the PC, the tested compilers for wxWindows are Microsoft C/C++ Version 7 and (to a lesser extent) Borland C++ 3.1 and Turbo C++ for Windows. Makefiles for MS C++ (Windows 3.1 and NT), and project files for Turbo C++ for Windows, are provided.
Under UNIX, Sun C++, GNU C++ (GCC) and AT&T C++ are known to work with wxWindows. See also Requirements.
The importance of using a platform-independent class library cannot be overstated, since GUI application development is very time-consuming, and sustained popularity of particular GUIs cannot be guaranteed. Code can very quickly become obsolete if it addresses the wrong platform or audience. wxWindows helps to insulate the programmer from these winds of change. Although wxWindows may not be suitable for every application, it provides access to most of the functionality a GUI program normally requires, plus some extras such as form construction, interprocess communication and PostScript output, and can of course be extended as needs dictate. As a bonus, it provides an arguably cleaner interface to XView, Motif and Windows 3.1 than the native APIs. Programmers may find it worthwhile to use wxWindows even if they are developing on only one platform.
Here is a summary of some of the advantages of wxWindows:
And here are the important downsides, so you can assess wxWindows's applicability to your needs: