Disponible la nueva versión "donationware" 7.3 de OrganiZATOR
Descubre un nuevo concepto en el manejo de la información.
La mejor ayuda para sobrevivir en la moderna jungla de datos la tienes aquí.

Curso C++

[Home]  [Inicio]  [Índice]


1.7.4  Eventos

§1  Sinopsis

Como señalábamos en la Introducción a la POO ( 1.1), los componentes básicos de los programas actuales son los objetos, que representan abstracciones y tienen dos tipos de componentes: propiedades y métodos. Las propiedades representan magnitudes que representan a su vez "propiedades" del objeto (valga la redundancia). Por ejemplo, una propiedad puede representar el color de fondo de una ventana; el saldo de una cuenta, o el estado de una línea de comunicación. Por su parte los métodos representan "acciones" que se ejecutan sobre el objeto, cuyo resultado puede ser de cualquier tipo, incluyendo devolver un valor. Por ejemplo, devolver el valor de una propiedad (saldo de una cuenta), alterarlo (cambiar el color del fondo de una ventana) o cerrar un dispositivo de comunicación.

En general la sucesión de acciones (invocación de métodos) que se realiza a lo largo de un programa, viene determinada por la estructura de su código. Pero la totalidad de los programas que corren en un sistema moderno son interactivos, en el sentido que su comportamiento puede ser influido desde el exterior (aunque sea para abortar su ejecución). El exterior inmediato del programa está representado por el Sistema Operativo que lo alberga en su seno. El exterior lejano puede ser el operador que actúa sobre el Sistema a través de un dispositivo (un teclado o un ratón) o un dispositivo que actúa sin intervención de ningún operador. Por ejemplo, una línea de comunicaciones que cambia de estado.

En el lenguaje de los Sistemas Operativos a estos sucesos captados por el Sistema se los denomina eventos.  Según su tipo los eventos pueden ser procesados íntegramente por el SO o trasladados a los programas que corren bajo su control en forma de mensajes.  Estos mensajes son interpretados por el programa como una petición para que ejecute algunos de sus métodos. Precisamente la estructura de un programa Windows moderno se basa en un bucle en el que el programa interroga constantemente al Sistema a la espera de mensajes, y en una larga cadena de sentencias condicionales (del tipo if ... else) en la que toma diversas acciones según el mensaje recibido.

Según su origen, los eventos se dividen en dos grandes categorías:

  • Eventos de usuario
  • Eventos de Sistema

Con independencia de su denominación,  BC++ comprueba si se ha asignado algún código para manejar ese evento. Si se ha asignado, se ejecuta dicho código, en caso contrario no ocurre nada.

§2  Eventos de usuario

Los eventos de usuario son acciones que tienen su origen en el usuario del programa. Ejemplos de este tipo son OnClick (el usuario pulsa el botón del ratón), OnKeyPress (el usuario pulsa una tecla del teclado) y OnDblClick (el usuario pulsa dos veces el botón del ratón), Etc. Este tipo de eventos están siempre relacionados con alguna acción del usuario.

§3  Evento de Sistema

Este tipo de eventos son aquellos que se inician en el Sistema Operativo. Por ejemplo, OnTimer (el temporizador puede generar uno de estos eventos a intervalos de tiempo determinados), el evento OnCreate (un componente ha sido creado), OnPaint (un componente o ventana necesita ser redibujado), Etc. Por lo general los eventos de Sistema no tienen su origen directo en ninguna acción del usuario.

§4  Corolario

Desde el punto de vista de la programación C++, el tratamiento de eventos no es una cuestión del lenguaje, sino de la programación C++ "para" un sistema Operativo concreto. Por ejemplo Linux o Windows; razón por la cual no ahondaremos aquí en un tema que en cualquier caso no corresponde a un curso general de C++, sino a otro manual que podríamos denominar "Programación C++ para Windows, Linux, etc".

Al estudiante del lenguaje C++ le basta saber que en el caso de los programas C++, estos mensajes entre el Sistema y la aplicación se reciben en ciertas funciones muy curiosas, denominadas exportables o "callback", que tienen la peculiaridad de que además de la propia aplicación, también pueden ser invocadas por el Sistema, que puede de este modo pasar a la aplicación información sobre los eventos que le conciernen ( 1.4.4b2a).