1.1. ¿Qué son las bibliotecas gráficas?

Las bibliotecas gráficas no son más que un conjunto de clases y funciones encapsuladas en una biblioteca que pueden ser utilizadas por programas o usuarios para mostrar o dibujar gráficos en la pantalla de manera simple.

¿Qué es wxWidgets?

wxWidgets es una biblioteca gráfica en C++ que posee del GUI (Interfaz Gráfica de Usuario) y otras facilidades en distintas plataformas. La versión 2 es soportada por todas las versiones de sobremesa de Windows, Unix (con GTK+ o Motif), y MacOS.

Algunas de las ventajas de wxWidgets son:

Soporta varios sistemas operativos, pero con una pequeña particularidad: de acuerdo a la plataforma en que se ejecute la aplicación, esta tomara el estilo del SO donde se esté ejecutando. Por ejemplo, si se ejecuta en MS-Windows, la aplicación tendrá la apariencia de una aplicación hecha con el API de Windows, pero si se ejecuta en GNU/Linux, tendrá la apariencia de una aplicación GTK2. Es decir que la parte de GUI es solo una capa para el API nativa de cada SO. Además de lo anterior, wxWidgets cuenta con una versión embebida para dispositivos como PDAs y teléfonos celulares.

Es cien por ciento libre en todas las plataformas que soporta, con una licencia LGPL modificada. Tiene un API orientada a objetos que es, en extremo, fácil de aprender y utilizar. Posee funcionalidades para muchos aspectos aparte de la construcción de interfaces gráficas. Como gráficos 2D, 3D con OpenGL, Bases de Datos (ODBC), redes, impresión, hilos, entre muchas otras.

Pese a todas estas ventajas, wxWidgets también tiene algunas desventajas: Su diseño orientado a objetos no es el mejor que uno pueda ver. A veces abusa de la utilización de macros para realizar ciertas operaciones (como las tablas de eventos), aunque esto hace que codificar sea más fácil, también complica la labor de depuración, especialmente para los mismos desarrolladores de wxWidgets. Por otro lado, debido a que el framework se comenzó a desarrollar hace bastante tiempo, no cuenta con soporte para algunas características relativamente modernas del lenguaje C++ como por ejemplo el manejo de excepciones, y la STL.