el 10-11-2011 06:57 AM
Hola,
hay alguna posibilidad de que al apretar la tecla "ESC" sea reconocido como un evento?, talvez alguien me pueda dar un ejemplo.
Gracias.
Abel.
PS. Trabajo con LabWindows CVI.
el 10-21-2011 09:02 AM
Hola oabel5,
CVI genera un evento conocido como EVENT_KEYPRESS cuando el usuario presiona una tecla y manda este evento a una función de callback. En la siguiente página encontrarás más información acerca de cómo utilizar este evento en CVI.
http://zone.ni.com/reference/en-XX/help/370051P-01/cvi/uiref/cvieventkeypress/
Asimismo, hay una función que te permite simular cuando un usuario presiona una tecla. Esta función se conoce como FakeKeystroke y en la siguiente página podrás encontrar más información acerca de cómo utilizarla.
http://zone.ni.com/reference/en-XX/help/370051T-01/cvi/uiref/cvifakekeystroke/
Espero que la información te sirva para resolver tu problema.
Saludos,
Héctor Rojas
el 10-21-2011 09:27 AM
Más simple aún es poner un botón "Terminar" en la pantalla y ponerle el Esc como shortcut key: presionar la tecla será equivalente al click en el botón y su callback será ejecutada con evento EVENT_COMMIT.
10-21-2011 11:49 PM - editado 10-21-2011 11:56 PM
Hola,
gracias por las respuestas; aunque la de Roberto me parece mas sencilla, lamentablemente no consigo que la CVICALLBACK sea llamada, cuando presiono ESC.
Mi Función:
int CVICALLBACK Terminar (int panel, int control, int event,void *callbackData, int eventData1, int eventData2) { switch (event) { case EVENT_COMMIT: SetPanelAttribute (popuphandle_ini, ATTR_VISIBLE, 0); break; } return 0; }
Naturalmente que en el Control activé el Shortcut Key:
Donde estoy cometiendo un error?
Saludos.
Abel
10-22-2011 02:45 AM - editado 10-22-2011 02:51 AM
Lo que puede pasar es que el panel en el que está el botón no sea el panel activo en este momento.
Creo recordar que estás desarrollando una interfaz con un tab control: si por ejemplo el botón está en el panel principal pero el usuario estaba interactuando con una de las páginas del tab aquella es el panel activo y el que recibe los eventos, así que la tecla Esc no actúa. Si este es el caso, creo que lo mejor es seguir la solución de Hector y instalar una callback en el panel principal (aquello en el que está el tab).
EDIT: mirando al panel handle me acordé de esta discusión tuya. Si esta pregunta se refiere a aquella situación yo si tu instalaría una callback en el panelito, ocultándolo cuando el panel ya no es activo (EVENT_LOST_FOCUS) u si el usuario cliquea sobre él (EVENT_LEFT_CLICK).