wxWindows is a portable C++ GUI framework. My employer has a portable C++ application, and I'm getting tired of maintaining all the custom GUI code. So we've begun an ongoing experiment: porting our application to wxWindows. Here's what we've learned so far.

  • wxWindows for Win32 is great. The wxWindows API feels a lot like MFC, but without the yuck factor (don't ask me how they do it). It produces flawlessly native Win32 applications, and provides a reasonable amount of access to the underlying HWND and DC objects if you need to do something gross. There's even some primitive third-party support for ActiveX controls.
  • wxWindows for GTK+ isn't bad at all. If you're looking to develop an application on Windows, and port to GTK (or vice versa), wxWindows is a solid solution. You'll encounter some subtle differences in behavior when porting, but nothing you can't work around.
  • wxWindows for the MacOS has issues, but it runs. wxWindows won't give you a Mac port for free--at least if your application is complicated--but it may make a Mac port feasible. In general, I've encounted more bugs in wxMac than in the other ports, and more suprising behavior in certain corner cases. I did get a Mac version running with a day of work, but it still needs a lot of tweaking and bug stomping.
  • wxWindows is meant for real applications. I don't know quite how to describe this--it's a general impression from using the toolkit. But when I've needed to do something strange or theoretically inelegant, I've generally found hooks in the right places. This is a sign of a framework that evolved through real-world use, not one that was designed by a committee and never used to build real-world applications.
  • The support is excellent. Our application requires several out-of-the-ordinary features, not all of which are provided by wxWindows. I'm currently working (well, I will be working when I finish writing two reports) on a new offscreen-drawing system, and we're hiring a wxWindows contributor to do some really scary low-level stuff. So far, we've haven't encountered any insurmountable difficulties in getting the toolkit to do strange things.

I'll post updates on this subject as the project continues. And if you have any wxWindows exeriences of your own, please feel free to e-mail me.