Cross-Platform GUI Programming with wxWidgets (book review)

If you spend time writing applications targeting several platforms like Windows/Unix/Mac or even embedded platforms like Pocket PC (WinCE) then, no doubt you have come across a open source widget system called wxWigets.

Book : Cross-Platform GUI Programming with wxWidgets
By : Julian Smart, Kevin Hock, Stefan Csomor

Cross-Platform GUI Programmg with wxWidgets, was published recently, on July 25, 2005, and is a must for any cross platform UI developer. The goal of wxWidgets is not to replace UIs such as MFC or Motif even or GTK+, but to work above them. For a cross platform developer, this is a saving grace. I could now build advanced cross platform applications that have a native look and feel on the target platforms.

Perhaps like many, if you are unaware of wxWidgets ,also referred as simply wx, you may think its just another GUI, and the problem with that, is having people to relearn GUIs, which can lead to fustration. Even Joel Spolsky cautions about user fustrations with UI design, from his classic User Interface Design book. Lets face it, mostly everyone has experienced Micrsoft's Windows UI. So we have come to accept and expect certain Microsoft UI formalities. Like expanding a window by moving the mouse to a window edge. For most other UIs like motif, that would just move the window and cause user fustration. So the last thing we need is to re-learn another UI. Wx resolves this by using the native underlining UI on that platform, such as MFC if it were a Windows application, so the end result is an application that really is using MFC but was programmed with wx.

Some problems with new UI is often, that it is incomplete, compared to some UI like MFC. Most UI, don't include networking functions, memory management, database functions, or advance graphic engines. Wx is very complete, with ODBC functions, and OpenGL routines. KICAD is an open source CAD software using wx, how amazing is that!

Overall, this book is a simple read, it is geared towards C/C++ programmers, and if you have any experience with other GUIs as MFC, OWL you will quickly excel in its application. You can also use a variety of other languages such as Python, Perl, Basic, Lua, Eiffel, Java, JavaScript, Ruby, Haskell and C#.

I don't really have too many cons against the book. Other than, its really a beginner to intermediate introduction to wx. If you're a wx expert, you can still benefit from the book, I expecially liked its multithreaded section.

Also what is not covered in the book, is macros in wx which contain really nice features that allow for dynamic classes to be defined on runtime and imported via dynamic libraries and make for some cool plugin technology, for those whom don't wish to make thier application open sourced, and yet, want users to extend the UI of their application, via plugins.