event.h

Clase wxIdleEvent

Esta clase se utiliza para los eventos de inactividad, que se generan cuando el sistema se queda inactivo.

Jerarquía:

Hay que tener en cuenta que, a menos que haga algo específicamente, los eventos de inactividad no se envían si el sistema permanece inactivo una vez que se ha convertido en él, por ejemplo, solo se generará un único evento de inactividad hasta que ocurra algo más que dé lugar a más eventos normales y solo entonces se volverá a enviar el siguiente evento de inactividad.

Si se necesita asegurar un flujo continuo de eventos de inactividad, se puede utilizar el método wxIdleEvent::RequestMore en su manejador o llamar a wxWakeUpIdle() periódicamente (por ejemplo desde un manejador de eventos de temporizador), pero tenga en cuenta que ambos enfoques (y especialmente el primero) aumentan la carga del sistema y por lo tanto deben evitarse si es posible.

Por defecto, los eventos de inactividad se envían a todas las ventanas, incluso a las ocultas, ya que pueden mostrarse si se cumple alguna condición desde su manejador wxEVT_IDLE (o el relacionado wxEVT_UPDATE_UI). Sin embargo, los hijos de las ventanas ocultas no reciben eventos idle ya que no pueden cambiar su estado de forma perceptible por el usuario. Finalmente, el objeto global wxApp también recibe estos eventos, como es habitual, por lo que puede ser utilizado para cualquier procesamiento global de tiempos muertos.

Si el envío de eventos de inactividad a todas las ventanas está causando una sobrecarga significativa en lu aplicación, se puede llamar a wxIdleEvent::SetMode con el valor wxIDLE_PROCESS_SPECIFIED, y establecer el estilo de ventana extra wxWS_EX_PROCESS_IDLE para cada ventana que deba recibir eventos de inactividad, todas las demás no los recibirán en este caso.

Eventos que utilizan esta clase

Las siguientes macros de manejadores de eventos redirigen los eventos a manejadores de funciones miembro 'func' con prototipos como:

void handlerFuncName(wxIdleEvent& event)

Macros de eventos:

EVT_IDLE(func)
Procesa un evento wxEVT_IDLE.

Mecanismo de acción retardada

wxIdleEvent se puede utilizar para realizar alguna acción "en un momento ligeramente posterior". Esto puede ser necesario en varias circunstancias cuando, por cualquier razón, algo no se puede hacer en el manejador de eventos actual. Por ejemplo, si se llama a un manejador de eventos de ratón con el botón del ratón pulsado, el ratón puede ser capturado en ese momento y algunas operaciones con él - especialmente capturarlo de nuevo - podrían ser imposibles o conducir a resultados no deseados. Si todavía se quiere capturarlo, se puede hacer desde el manejador wxEVT_IDLE cuando sea llamado la próxima vez en lugar de hacerlo inmediatamente.

Esto se puede conseguir de dos formas diferentes: cuando se utilizan tablas de eventos estáticas, se necesitará una bandera que indique al manejador de eventos inactivo (siempre conectado) si se debe realizar la acción deseada. El manejador originalmente llamado lo fijaría para indicar que efectivamente debe realizarse y el propio manejador inactivo lo reiniciaría para evitar que vuelva a realizar la misma acción.

Usando manejadores de eventos conectados dinámicamente las cosas son aún más simples ya que el manejador de eventos original puede simplemente wxEvtHandler::Connect() o wxEvtHandler::Bind() el manejador de eventos inactivo que sólo se ejecutaría entonces y podría wxEvtHandler::Disconnect() o wxEvtHandler::Unbind() él mismo.

Funciones miembro

wxIdleEvent()

wxIdleEvent::wxIdleEvent()

Constructor.

GetMode()

static wxIdleMode wxIdleEvent::GetMode()

Función estática que devuelve un valor especificando cómo wxWidgets enviará los eventos de inactividad: a todas las ventanas, o solo a aquellas que especifiquen que procesarán los eventos.

MoreRequested()

bool wxIdleEvent::MoreRequested() const

Devuelve true si la función OnIdle que procesa este evento solicitó más tiempo de procesamiento.

RequestMore()

void wxIdleEvent::RequestMore(bool needMore = true)

Indica a wxWidgets que se requiere más procesamiento.

Esta función puede ser llamada por un manejador OnIdle para una ventana o manejador de eventos de ventana para indicar que wxApp::OnIdle debe reenviar el evento OnIdle una vez más a las ventanas de la aplicación.

Si ninguna ventana llama a esta función durante OnIdle, entonces la aplicación permanecerá en un bucle de eventos pasivo (sin llamar a OnIdle) hasta que un nuevo evento sea enviado a la aplicación por el sistema de ventanas.

SetMode()

static void wxIdleEvent::SetMode(wxIdleMode mode)

Función estática para especificar cómo wxWidgets enviará los eventos de inactividad: a todas las ventanas, o sólo a aquellas que especifiquen que procesarán los eventos.

Parámetros
mode
Puede ser uno de los valores de wxIdleMode. El valor por defecto es wxIDLE_PROCESS_ALL.

Métodos y datos heredados

Esta clase hereda los métodos y datos miembro públicos y protegidos de wxObject y wxEvent.