About wxWindows

News

User feedback

Description

wxWindows sites

wxWindows Licence

Current issues

Download wxWindows

Authors



Help and Documentation

Documentation

Hello World

Installation

Mailing lists

Screenshots



Related sites

wxWindows

wxPython

wxPerl

wxWindows/GTK

Description


wxWindows is a C++ cross-platform GUI toolkit which was started as a one man project by Julian Smart. More information about wxWindows can be found at his Julian Smart's homepage. Today, wxWindows is being developed by a core team of handful of people from many countries and gets input in the form of user request and bug reports from its many users worldwide.

For various reasons, it was decided to start a complete rewrite of wxWindows which was called wxWindows 2.0. For a list of new features and changes from the older versions, you may read the Julian's homepage (see above).

Currently, work is being done on these ports of wxWindows 2.X:

  • Windows (wxMSW, finished)
  • Unix, GTK+ (wxGTK, finished)
  • Unix, Motif (wxMotif, available but barely maintained)
  • Macintosh (wxMac, available for MacOS 8.X, 9.0 and MacOS X)
  • OS/2 (wxOS2, minimal programs run)
  • Universal (runs on any drawing system, draws widgets itself, soon finished)
  • BeOS (wxBeOS, just started)
  • If there is demand for more ports such as plain X11 or Qt, we'll consider to start ports to these platfoms as well. So far only a few such requests have emerged and thus no work is being done on such a project.

    wxWindows provides a rich set of classes which help to make cross-platform GUI programming easy. In a number of aspects, it is modelled after MFC, making transition from MFC to wxWindows relatively painless. The main technical difference between most other free or commercial cross platform libraries is that wxWindows is a wrapper around existing widget sets, whereas the other toolkits (Qt, Tk, Java, Amulet, OPaC, JX, Fresko) draw their widgets themselves which results in applications having a different look than native applications for that specific platform.

    There is one project similar to wxWindows which is called V from ObjectCentral, but wxWindows is practically unchallenged as the most complete GUI toolkit offering platform independent classes for almost all aspects of application development.

    There are classes for the following categories

  • Window classes: wxWindow, wxFrame, wxDialogBox, wxPanel, wxCanvas etc.
  • Widget classes: wxButton, wxCheckbox, wxChoice, wxListBox, wxListCtrl, wxTextCtrl, wxGauge etc.
  • Data classes: wxList, wxString, wxHashTable, wxDate etc.
  • Stream classes: wxInputStrean, wxDataStream, wxTextStream, wxFileStream, wxSccketStream
  • Layout/constraint system
  • GDI classes: wxPen, wxBrush, wxFont, wxBitmap, wxImage etc.
  • Events: wxCommandEvent, wxMouseEvent, wxKeyEvent etc.
  • Devices contexts: wxPaintDC, wxPostScriptDC, wxMemoryDC, wxPrinterDC
  • Base classes for runtime-type information: wxObject
  • Interprocess communication: wxClient, wxConnection, wxSocket, wxServer etc.
  • Multiple document interface (MDI): wxMDIFrame, wxMDIChildFrame etc.
  • Document-view architecture: wxDocument, wxView, wxDocManager etc.
  • Printing framework: wxPreviewFrame, wxPrintDialog, wxPrinter etc.
  • Many helper classes, wxApplication, wxTypeTree, wxPathList etc.
  • Thread classes: wxThread, wxMutex etc.
  • Classes for internationalization
  • Built-in memory leak checking, log-files
  • A multitude of functions and macros
  • wxWindows is no longer C++ only. Much work has been done to provide bindings for the Python language and these bindings have been received almost enthusiastically by many Python developers. The project is called wxPython and it can be used to create native GUI applications within minutes without the eternal circle of editting, compiling, linking and running - thus making wxWindows and wxPython and ideal environment for prototyping application in Python and then finalizing it in C++.

    Recently, bindings for the Perl language have been added as well, aptly called wxPerl. This project has progressed fast and wxPerl is both stable and very fast.



    This page is maintained by Robert Roebling.