SoloCodigo

Programación General => C/C++ => Visual C++ => Mensaje iniciado por: miau en Sábado 27 de Mayo de 2006, 17:53

Título: Onkeydown
Publicado por: miau en Sábado 27 de Mayo de 2006, 17:53
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
Título: Re: Onkeydown
Publicado por: diego.martinez en Jueves 1 de Junio de 2006, 17:58
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:
Título: Re: Onkeydown
Publicado por: ivancp en Sábado 3 de Junio de 2006, 03:55
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.
Título: Re: Onkeydown
Publicado por: william20000 en Sábado 26 de Febrero de 2011, 23:08
Muchas gracias ivancp, si supieras de la que me salvaste, funcionó perfecto