Book Review: Cross-Platform GUI programming with wxWidgets

December 16, 2005
wxWidgets is an open-source library used for writing sophisticated C++ applications. There are quite a few libraries available for GUI development but what is unique about this library (wxWidgets) is its cross platform support as well as it being released in the open source realm. Some of the popular software like Chess Commander, Audacity - a popular audio editor and pgAdmin III - a powerful administration and development platform for the PostgreSQL database have been developed using wxWidgets. In fact, this library comes with 100s of ready to use C++ classes which can be used to rapidly build sophisticated applications targeting Windows, Linux, Mac OSX and even Palm OS platforms.

This book Cross-Platform GUI Programming with wxWidgets is a part of the Bruce Perens Open Source Series and is targetted at application developers who are intending to use wxWidgets to develop their software. The authors of the book ( and there are three of them ) explain each and every wxWidgets class that is of importance. The authors start their narration by giving a broad outline of the wxWidgets architecture in the very first chapter which sort of reduces the learning curve for new application developers. The second chapter takes the reader through writing and compiling a complete program using wxWidgets which gives the reader a feel for the structure of a simple wxWidgets program.

All developers should know that handling events like mouse clicks, key presses and so on form an integral part of any application development worth its name. The third chapter of this book takes a broad look at the various classes and event handlers in wxWidgets library which aid the application developer in trapping events in his program.

One thing that struck me while reviewing this really good book was that, the explanation of each wxWidget class is followed by a short code snippet which describes the usage of the class.

The book is divided into 20 detailed chapters each covering a specific topic. For example, if one chapter concentrates on writing multithreaded applications, another covers the wxWidget classes that can be used to implement drag and drop functionality in your applications.

Would you like to create a wizard like you see in some GUI setup installers ? No problem, you can do it easily by using the wxWizard class which is explained in 12th chapter by name "Advanced Window Classes" in the book.

In the last chapter, the authors dwells on the design guidelines that are to be followed while creating GUI applications. The book even boasts of a remarkable eleven appendixes tagged A to K, which ties up the threads of nitty-gritty details like installing the wxWidgets library on your PC running Linux, Windows or OSX prior to starting to write code for your programs.

The book comes with a CD-ROM which contains the wxWidgets library, the complete documentation in PDF format, development tools like Compilers and even an open-source application called DialogBlocks which is a RAD tool that can generate XRC or C++ code for your dialogs or frames. The interesting thing about all this is that it works very well on the Linux platform.

Outline of Chapters in the Book
  1. Introduction
  2. Getting Started
  3. Event Handling
  4. Window Basics - This chapter alone covers in detail close to 35 important classes.
  5. Drawing and Printing
  6. Handling Input
  7. Window Layout Using Sizers
  8. Using Standard Dialogs
  9. Writing Custom Dialogs
  10. Programming with Images
  11. Clipboard and Drag and Drop
  12. Advanced Window Classes
  13. Data Structure Classes
  14. Files and Streams
  15. Memory Management, Debugging and Error Checking
  16. Writing International Applications
  17. Writing Multithreaded Applications
  18. Programming with wxSocket
  19. Working with Documents and Views
  20. Perfecting your Application
A note about the Authors
This book is the result of the work of three people who are experts in their respective fields. They are ...
  • Dr Julian Smart created wxWidgets in 1992 at the AI Applications Institute, University of Edinburgh. His firm, Anthemion Software, Ltd, helps companies deploy wxWidgets.
  • Kevin Hock is the founder of BitWise Communications, LLC, and has been developing commercial applications with wxWidgets for several years and provides enhancements to all wxWidgets platforms.
  • Stefan Csomor owns Advanced Concepts AG, a cross-platform development and consulting firm. He is the main author of the MacOS port of wxWidgets .
The Book Specifications
Name : Cross-Platform GUI programming with wxWidgets
ISBN No: 0-13-147381-6
Authors : Julian Smart, Kevin Hock and Stefan Csomor
No of Pages : Over 700
Price : Check at Amazon.com
Publisher : Prentice Hall - Professional Technical Reference
Addons : One CD-ROM + 45 Days Free Access to Safari Bookshelf.

End Note
Cross-Platform GUI Programming with wxWidgets aims to be a definitive guide for application developers hoping to use wxWidgets library in their projects. This book covers almost all the classes of the wxWidgets library and can be used not only by beginners who want to program using wxWidgets but also acts as a reference for experienced programmers. But the reader is expected to know the C++ language. All in all a book worthy of a place in the book shelf of a programmer looking forward to developing applications using wxWidgets.

8 comments:

  • Jeff

    Great review... one thing of note, you spelled Bruce Perens last name wrong!:) Forgivable of course.

  • Ravi

    Jeff,
    Thanks for bringing the mistake to my notice. I appreciate it.

    Ravi

  • Price : $49.99 US / $69.99 Canada ?¿?

    What about of Spain? bah...

  • Thanks for the excellent review of this book. I was hoping to buy a book on wxWidgets programming but was not sure which to buy. Now that I have read your review, my mind is made up.

    Pretty good job.

    Thanks again.
    Frank Olley
    New Jersey

  • WouterVH

    You find the main page about the Bruce Perens' Open Source Series here:
    http://www.phptr.com/promotions/promotion.asp?promo=1484

    Right now you can only download a sample chapter of the WxWidgets-book, but soon (a few weeks to months) it will be fully online.
    http://www.phptr.com/title/0131473816

    A mirror of these books here:
    http://files.opencursus.org/bruce_perens_series/

  • wxWindows is not unique.
    There are lots of opensource crossplatform toolkits in the opensource realm.

    Some well known examples:
    - gtk+ - used by gimp, on all platforms
    - xul - used by mozilla projects on all platforms
    - qt - also gpl on all platforms (which makes it too open source for many projects)

  • Canadian price is totally out of whack with the current exchange rate. At the moment, $1 US equals about $1.18 CA. This should result in a Canadian price of about $59.00. Asking $69.99 represents a 40% premium on the dollar (as opposed to the actual current 18%) which is, shall we say, less than sporting.

  • estanislau

    Brazilian price R$144.97 or U$68.40...