Un evento es una acción que es reconocida por un objeto y provocada bien por el usuario al interactuar con la interfaz del programa (la pulsación de un botón del ratón, la pulsación de una tecla, etc.), o bien por el propio sistema.
Muchos de los objetos tienen un conjunto de eventos predefinidos que se pueden reconocer y, si ocurre alguno de ellos, se ejecuta un manejador de evento (función) como respuesta, por lo tanto, una aplicación para Windows en realidad lo que hace es ejecutar los manejadores de los distintos eventos que se van produciendo.
En wxWidgets, los componentes son simplemente atributos de una clase "contenedor", mientras que los manejadores de eventos son métodos de esta misma clase, por lo que surge la siguiente pregunta, ¿cómo sabemos qué evento de qué componente activa qué manejador?.
Para solucionar este problema tenemos la tabla de eventos, la cual tenemos que declarar siempre dentro de una clase "contenedor", y que enlazará cada evento con su respectivo manejador.
La tabla de eventos se definirá en el fichero fuente, entre las macros BEGIN_EVENT_TABLE y END_EVENT_TABLE.
Aunque no es usual, también podemos enlazar eventos con sus manejadores en tiempo de ejecución, es lo que llamamos eventos dinámicos.
Una posible aplicación sería el querer utilizar en el mismo evento diferentes manejadores dependiendo de que se cumpla una determinada condición o no. Otro posible uso sería el querer usar lenguajes de programación que no admitan eventos estáticos (como Python).
Asociado a este tipo de eventos existen dos funciones, Connect() y Disconnect(), que nos permiten enlazar y desenlazar manejadores con eventos. A estas funciones se les pasan por este orden: el identificador de ventana, el identificador de evento y un puntero al manejador de evento correspondiente.