[C con Clase] winapi - hacer un historial de acciones

Víctor baladrecs en gmail.com
Mie Mar 5 15:41:02 CET 2008


Gracias por constastar y perdón porque releyendo el mensaje no se entiende absolutamente nada, nunca se me ha dado bien expresarme por escrito. Lo que pretendo hacer es un historial de acciones del estilo del cmd de windows o la consola de linux, que al pulsar las teclas arriba y abajo vaya a los últimos comandos.

La aplicación en c++ ya la tengo hecha con una lista que guarda los comandos enviados y al terminar los guarda en un archivo para que se mantenga el historial entre las distintas sesiones. Al final todo me funciona bien pero el problema lo he tenido al implementar lo de las flechas arriba/abajo, no he podido de ninguna manera. Lo que he hecho al final es poner unos botones que hagan la acción.

El problema lo tengo porque lo he hecho con un dialog box (ya tenía toda la aplicación hecha así), pero no se como hacer que el switch principal reconozca que pulso las teclas arriba y abajo ya que entiende que cualquier pulsación es parte del mensaje... he probado con un "case WM_KEYDOWN:" pero nada de nada.

Muchas gracias ;-)

El pasado 2008-03-03 17:31:01, Steven escribió:
 
S> Hola Víctor,
S> Víctor wrote:
S> > No sabia bien que título poner, intento explicarlo. Tengo hecho un
S> > programa en el que voy introduciendo mensajes y aparecen en pantalla.
S> > Lo que quiero hacer (si se puede) es guardar esas acciones que
S> > aparecen en pantalla en un archivo y que de alguna forma pueda
S> > acceder a esas acciones que ya he utilizado antes desde el
S> > programa... se que es un poco general pero es que no tengo claro como
S> > hacerlo pero sí que es lo que quiero conseguir :s
S> > 
S> Sí se puede, pero depende de la sofisticación y complejidad que quieras 
S> tener. Deberías diseñar el formato de los mensajes o acciones en 
S> general. Como no nos has dado información específica o algunos ejemplos, 
S> no podemos darte una explicación más detallada. Te pongo un ejemplo para 
S> que te hagas una idea de un posible formato en el fichero de acciones:
S> El formato de un registro se define como:
S> [TIPO_DE_ACCIÓN, PARÁMETRO_1, PARÁMETRO_2, ..., PARÁMETRO_N]
S> Por ejemplo,
S> [0, 45, 23] [4, -3, 56, 78, 21] [2, 3, 10, -1, 5] [5, 0, "imagen.bmp"]
S> Aquí, tendrías que saber exactamente lo que significan las acciones 0 y 
S> las interpretaciones de sus respectivos parámetros. Por ejemplo,
S> 0 := sumar dos números => 2 parámetros:
S>       #1 : primer sumando
S>       #2 : segundo sumando
S> 2 := ordenar una lista de números => 0 o más parámetros:
S>       #1 : cantidad de elementos en la lista
S>       #2 : elemento
S>       #3 : elemento
S>       ...
S>       #N : elemento
S> 4 := "hashear" una lista de cuatro índices => 0 o más parámetros (máximo 4):
S>       #1 : elemento
S>       #2 : elemento
S>       #3 : elemento
S>       #4 : elemento
S> 5 := cargar una imagen => 2 parámetros:
S>       #1 : tipo de imagen:
S>            0 - BMP
S>            1 - JPEG
S>            2 - GIF
S>            3 - PNG
S>       #2 : ruta y nombre de la imagen
S> Posiblemente querrás tener un registro principal como cabecera acerca de 
S> la lista de registros posteriores. Por ejemplo,
S> [VERSIÓN, CANTIDAD_DE_REGISTROS]
S> O si quieres algo más complicado, podrías tener un directorio de 
S> registros para ir directamente al registro que quieras buscar. Sin 
S> embargo, como estás realizando un historial, seguramente no necesitarás 
S> acceder a los registros arbitrariamente, sino secuencialmente.
S> Todo esto es bastante genérico. Si puedes encontrar un formato común 
S> para todas las acciones, entonces será mejor en la implementación.
S> De todas maneras, quiero aclarar que este tipo de problemas tiene que 
S> ver con diseño y ficheros, y no necesariamente con el API de MS-Windows.
S> Espero que esto te oriente.
S> Steven
S> _______________________________________________
S> Lista de correo Cconclase Cconclase en listas.conclase.net
S> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
S> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ


Más información sobre la lista de distribución Cconclase