Yo tengo todos mis programas en modo consola.
Hasta donde se, las librerías gráficas son para ambiente GUI (gráfico) aunque se puede lograr un ambiente CUI (hibrido, texto y gráfico)
Por ejemplo tengo un programa con la librería GTWVG en modo consola con un menú en modo gráfico.
El producto final es un .exe en modo hibrido que ya no corre dentro de una ventana cmd (en el caso de windows) sino que es una aplicación en una ventana windows sin la posibilidad de configurar las propiedades de la ventana de consola de windows, no se si soy claro.
Los ajustes de tamaño y font ya no se hacen como en la aplicación en ventana de consola de windows, funcionan las ñ y los tildes como en cualquier programa windows, sin los problemas del modo consola.
No medí el consumo de memoria.
Pero al ser un hibrido, no termina siendo ni una cosa ni la otra, si bien el menú es gráfico, el uso del mouse se termina cuando salís del menú a una opción del mismo, para eso tuve que programar el uso de mouse en browses y gets, pero no me quedó como yo quería.
No encontré forma de hacer interactuar el menú en modo gráfico con el resto de la aplicación en modo consola, por ejemplo cada vez que selecciono una opción y me voy de la pantalla principal, mato el menú y cuando vuelvo del procedure lo activo otra vez.
El modo GUI está pensado para trabajar con ventanas, no queda otra, y para trabajar con ventanas hay que manejar hilos (trheads) para poder lanzar dichas ventanas en esos hilos.
En el modo CUI habría que hacer lo mismo.
El modo consola tiene un solo camino de ida y de vuelta, es el menú el que maneja el estado de espera principal del programa, de ahí salís para las opciones y ahi volvés, siempre en el mismo bucle por llamarlo de alguna manera.
En el modo GUI no es así, el menú no tiene el control del estado de espera porque no existe un único estado de espera, las opciones de menú se lanzan y tienen vida propia, podrías lanzar una misma opción de menú varias veces, no se si soy claro.
En mi caso hice un bucle donde se corre el menú gráfico para imitar este estado de espera único, eje del sistema.
Otro tema, hasta donde se, GTWVG es solo para windows, no es compatible con linux, en mi caso es fundamental tener herramientas multiplataforma.
En este caso la que sirve es HBQT
En este momento estoy desarrollando un programa nuevo totalmente en modo consola, con un el menú de Clipper 5.3 que permite manejo de mouse, a esto le sumo el manejo de mouse en browses y gets y listo.
Le doy una apariencia mas "Windows" usando colores grises y tratando de no dejar fondos negros y chau, queda bien, todo funciona como estoy acostumbrado y le mejoro el manejo a los que vienen super acostumbrados al mouse.
El manejo de estos cambios se hacen en los archivos .hbp incluyendo o sacando librerías y con los parámetros de hbmk2 por ejemplo -gui
Hay muchos post al respecto en esta lista.
Espero no haberte aburrido con los comentarios.
Fermín