La mayoría de los kits de herramientas GUI actualmente usan el modelo Signals + Slots. Fueron Qt y GTK +, si no me equivoco, quién fue el pionero.
Ya sabes, los widgets u objetos gráficos (a veces incluso los que no se muestran) envían señales al controlador del bucle principal. El controlador del bucle principal llama a los eventos , devoluciones de llamada o ranuras asignadas para ese widget / objeto gráfico. Por lo general, hay virtual
controladores de eventos predeterminados (y en la mayoría de los casos ) que ya proporciona el kit de herramientas para manejar todas las señales predefinidas, por lo tanto, a diferencia de los diseños anteriores, donde el desarrollador tenía que escribir todo el bucle principal y el controlador para cada mensaje. (piense en WINAPI), el desarrollador solo tiene que preocuparse por las señales en las que necesita implementar una nueva funcionalidad.
Ahora, hasta donde yo sé, este diseño se está utilizando en la mayoría de los juegos de herramientas modernos. Hay Qt, GTK +, FLTK, etc. Hay Java Swing. C # incluso tiene una función de lenguaje (eventos y delegados), y Windows Forms se ha desarrollado en este diseño. De hecho, durante la última década, este diseño para la programación GUI se ha convertido en una especie de estándar no escrito. Dado que aumenta la productividad y proporciona una mayor abstracción.
Sin embargo, mi pregunta es:
¿Existe algún diseño alternativo, que sea paralelo o práctico para la programación moderna de GUI?
¿Es el diseño de Señales + Tragamonedas, el único práctico en la ciudad? ¿Es factible hacer Programación GUI con cualquier otro diseño? ¿Hay algún juego de herramientas GUI moderno (preferiblemente exitoso y popular) basado en un diseño alternativo?
std::function
, no una señal asincrónica. Además, la API de Windows no proporcionanDefWindowProc
el cual procesa los mensajes de Windows como una aplicación por defecto. Así que voy a postular que su pregunta se basa en una lógica defectuosa.