RE:programar un entorno grafico
En ambos casos la pregunta es muy general y para nada trivial asi que vamos por partes, tu interfase debe soportar ventanas?, necesitas ingreso de datos por teclado?, necesitas un sistema de menues?. Cada uno de estos temas requiere soluciones diferentes y complejas en sí mismas.
En las GUI existen lo que se llaman Wingets que son elementos visuales coerentes, por ejemplo Windows en su GUI tiene botones, comboboxes, cuadros de edición, listas descolgables, barra de menues, cada uno de esos elementos son Wingets.