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

Steven R. Davidson vze266ft en verizon.net
Mie Mar 5 19:49:50 CET 2008


Hola Víctor,

Víctor wrote:
> 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.
> 

Creo que habría sido mejor usar el término "mensaje" o incluso "cadena 
de caracteres" para explicar lo que quieres guardar. El término 
"acción", al menos para mí, implica una lógica más compleja que un mero 
mensaje.

> 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.
> 

Según nos cuentas, esto significa que quieres controlar el historial 
directamente con el teclado. Como no nos has dicho dónde aparecen estos 
mensajes, no te puedo dar una solución exacta a tu problema. Sin 
embargo, creo que es mejor optar por un control combinado (combobox). 
Cada elemento en el listado será el mensaje el usaurio ha escrito. 
Puedes usar las flechas sin problemas para "navegar" y elegir 
cualesquier mensajes en tal listado.

De lo contrario, tendrás que modificar el procedimiento del cuadro de 
edición o del diálogo, dependiendo de los controles que tengas en tu 
aplicación. Otra posibilidad es crear un cuadro de diálogo sin modo. Sin 
embargo, esto implicará que tu cuadro de diálogo no se comportará como 
un cuadro de diálogo "normal". Para ofrecer tal comportamiento, tendrías 
que invocar 'IsDialogMessage()' en el bucle 'while' de tu aplicación 
pariente. Para más información acerca de esta función, puedes consultar 
la referencia en nuestro curso del API de MS-Windows, yendo a: 
http://winapi.conclase.net/curso/index.php?fun=IsDialogMessage


Espero que esto te sirva.

Steven






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