• Viernes 19 de Abril de 2024, 12:06

Autor Tema:  Onkeydown  (Leído 1897 veces)

miau

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Onkeydown
« en: Sábado 27 de Mayo de 2006, 17:53 »
0
buenas a todos, perdonad si la pregunta está repetida, pero lo he buscado y no encuentro nada...

Mi problema es el siguiente, tengo una aplicación MFC, con varios botones, cajas de texto, etc... En un momento dado intento que al pulsar una tecla se ejecute cierta función, pero no hay manera de que entre en la función onkeydown...

por ejemplo, con las flechas lo único que hace es moverse por los diferentes controles, eso sí, si los desactivo todos (son demasiados y es un engorro), si que captura las teclas

En Delphi he hecho lo mismo y no hay problema utilizando la propiedad KeyPreview, en la ayuda de visual tb la encuentro, pero no tengo ni idea de como utilizarla

espero me podais ayudar

muchas gracias

diego.martinez

  • Miembro MUY activo
  • ***
  • Mensajes: 297
    • Ver Perfil
Re: Onkeydown
« Respuesta #1 en: Jueves 1 de Junio de 2006, 17:58 »
0
de MFC no es que tenga mucha idea pero si sabes algo de como va el bucle de mensajes, puedes capturar el evento WM_SYSKEY o WM_KEYDOWN:

ivancp

  • Miembro activo
  • **
  • Mensajes: 70
    • Ver Perfil
Re: Onkeydown
« Respuesta #2 en: Sábado 3 de Junio de 2006, 03:55 »
0
Hola,

Puedes escribir la funcion virtual PreTranslateMessage:


Código: Text
  1. BOOL CTuDialogo::PreTranslateMessage(MSG* pMsg)
  2. {
  3.    if(pMsg->message == WM_KEYDOWN && pMsg->wParam = VK_LEFT)
  4.    {
  5.       MessageBox("Cursor Izquierdo");
  6.       return TRUE;
  7.    }
  8.    return CTuDialogo::PreTranslateMessage(pMsg);
  9. }
  10.  

VK_LEFT, es la tecla de cursor izquerdo.

VK_RIGHT derecho, VK_UP arriba, VK_DOWN abajo.
ivancp                

william20000

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: Onkeydown
« Respuesta #3 en: Sábado 26 de Febrero de 2011, 23:08 »
0
Muchas gracias ivancp, si supieras de la que me salvaste, funcionó perfecto