[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