Encontramos la solución a esta incógnita, al menos eso deseamos. Si sigues con inquietudes coméntalo, que con placer te responderemos
Solución:
Esencialmente, el sistema de ventanas de un sistema operativo expone algunas llamadas API que puede realizar para realizar trabajos como crear una ventana o poner un botón en la ventana. Básicamente, obtiene un conjunto de archivos de encabezado y puede llamar a funciones en esas bibliotecas importadas, tal como lo haría con stdlib y printf
.
Cada sistema operativo viene con su propio conjunto de herramientas GUI, conjunto de archivos de encabezado y llamadas API, y su propia forma de hacer las cosas. También hay kits de herramientas multiplataforma como GTK, Qt y wxWidgets que lo ayudan a crear programas que funcionan en cualquier lugar. Lo logran al tener las mismas llamadas a la API en cada plataforma, pero una implementación diferente para aquellas funciones de la API que llaman a las llamadas a la API del sistema operativo nativo.
Una cosa que todos tendrán en común, que será diferente de un programa CLI, es algo llamado bucle de eventos. La idea básica allí es algo complicada y difícil de comprimir, pero en esencia significa que no va a entrar mucho en su clase principal/función principal, excepto:
- verifique la cola de eventos si hay nuevos eventos
- si lo hay, envíe esos eventos a los controladores apropiados
- cuando haya terminado, devuelva el control al sistema operativo (generalmente con algún tipo de llamada de función especial “dormir” o “seleccionar” o “ceder”)
- luego, la función de rendimiento regresará cuando el sistema operativo haya terminado, y tendrá otra vuelta al ciclo.
Hay muchos recursos sobre la programación basada en eventos. Si tiene alguna experiencia con JavaScript, es la misma idea básica, excepto que usted, el creador de secuencias de comandos, no tiene acceso ni control sobre el bucle de eventos en sí, o qué eventos hay, su único trabajo es escribir y registrar controladores.
Debe tener en cuenta que la programación de GUI es increíblemente complicada y difícil, en general. Si tiene la opción, en realidad es mucho más fácil simplemente integrar un servidor web incorporado en su programa y tener una interfaz basada en HTML/web. La única excepción que he encontrado es Cocoa+Xcode+creador de interfaz+tutoriales de Apple que lo convierten fácilmente en el entorno más accesible para las personas nuevas en la programación de GUI que he visto.
Hay un montón de bibliotecas GUI portátiles gratuitascada uno con sus propias fortalezas y debilidades:
- Qt
- Estimado ImGui
- GTKmm (basado en GTK+)
- wxWidgets
- FLTK
- Último ++
- JUCE
- …
Especialmente Qt tiene buenos tutoriales y herramientas que te ayudan a empezar. ¡Disfrutar!
Tenga en cuenta, sin embargo, que debe evitar plataforma específica funcionalidad como la API de Win32 o MFC. Eso te ata innecesariamente a una plataforma específica sin casi ningún beneficio.
Algoritmo independiente del sistema operativo “Creación de aplicaciones GUI en C++ en tres pasos“:
-
Instalar Creador Qt
-
Crear nuevo proyecto (aplicación Qt Widgets)
-
Constrúyelo.
Felicidades, tienes tu primera GUI en C++.
Ahora está listo para leer mucha documentación para crear algo más complicado que la aplicación GUI “Hello world”.