Pues para crear un menú de ese estilo una lista enlazada puede representar cada elemento, con unos datos como:
Código:
struct elemento {
char titulo[40];
void (* funcion)();
struct elemento * submenu;
struct elemento * siguiente;
}
Simplemente vas rellenándolo con el título, la funcion a la que quieras llamar cuando sea pulsado, NULL y el puntero al siguiente elemento. Cuando quieras un submenú en alguna de las opciones, cambias el NULL de "submenu" por la direccion del primer elemento de otro sub menu, y fuera.
Después de acabar el programa es muy gracioso y útil (para saber si funciona) hacer un menú cíclico haciendo que "submenu" apunte a la cabeza del mismo menu en el que estás. Algo así como que "Guardar ->" te volviese a sacar el menú Archivo.