miércoles, 5 de marzo de 2008

VC++: Desactivar la tecla Escape en ventanas no modales

En ocasiones puede ser necesario la desactivación de la funcionalidad que traen por defecto las ventanas no modales en Windows que hace que al pulsar ESC la ventana desaparezca.

En realidad lo que hace el sistema es considerar la pulsación como pinchar en el botón Cancelar de la ventana... si lo hubiese. El truco para desactivarlo desde VC++ es simplemente crear una función que sobreescriba la función de OnCancel()

Así, por ejemeplo para una supuesta clase CMiClaseDeEjemplo, quedaría

MiClaseDeEjemplo.cpp

void CMiClaseDeEjemplo::OnCancel()
{

}



MiClaseDeEjemplo.h

protected:
virtual void OnCancel();


Con eso bastará. No hace falta ni definir mapa de mensajes ni poner botones. Fácil, ¿verdad?. No lo he llegado a probar en ventanas modales, pero imagino que funcionará exactamente igual