DoOneEvent.3
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:4k
- '"
- '" Copyright (c) 1990-1992 The Regents of the University of California.
- '" Copyright (c) 1994-1996 Sun Microsystems, Inc.
- '"
- '" See the file "license.terms" for information on usage and redistribution
- '" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
- '"
- '" RCS: @(#) $Id: DoOneEvent.3,v 1.2 1998/09/14 18:39:48 stanton Exp $
- '"
- .so man.macros
- .TH Tcl_DoOneEvent 3 7.5 Tcl "Tcl Library Procedures"
- .BS
- .SH NAME
- Tcl_DoOneEvent - wait for events and invoke event handlers
- .SH SYNOPSIS
- .nf
- fB#include <tcl.h>fR
- .sp
- int
- fBTcl_DoOneEventfR(fIflagsfR)
- .SH ARGUMENTS
- .AS int flags
- .AP int flags in
- This parameter is normally zero. It may be an OR-ed combination
- of any of the following flag bits:
- TCL_WINDOW_EVENTS,
- TCL_FILE_EVENTS, TCL_TIMER_EVENTS, TCL_IDLE_EVENTS, TCL_ALL_EVENTS, or
- TCL_DONT_WAIT.
- .BE
- .SH DESCRIPTION
- .PP
- This procedure is the entry point to Tcl's event loop; it is responsible for
- waiting for events and dispatching event handlers created with
- procedures such as fBTk_CreateEventHandlerfR, fBTcl_CreateFileHandlerfR,
- fBTcl_CreateTimerHandlerfR, and fBTcl_DoWhenIdlefR.
- fBTcl_DoOneEventfR checks to see if
- events are already present on the Tcl event queue; if so,
- it calls the handler(s) for the first (oldest) event, removes it from
- the queue, and returns.
- If there are no events ready to be handled, then fBTcl_DoOneEventfR
- checks for new events from all possible sources.
- If any are found, it puts all of them on Tcl's event queue, calls
- handlers for the first event on the queue, and returns.
- If no events are found, fBTcl_DoOneEventfR checks for fBTcl_DoWhenIdlefR
- callbacks; if any are found, it invokes all of them and returns.
- Finally, if no events or idle callbacks have been found, then
- fBTcl_DoOneEventfR sleeps until an event occurs; then it adds any
- new events to the Tcl event queue, calls handlers for the first event,
- and returns.
- The normal return value is 1 to signify that some event
- was processed (see below for other alternatives).
- .PP
- If the fIflagsfR argument to fBTcl_DoOneEventfR is non-zero,
- it restricts the kinds of events that will be processed by
- fBTcl_DoOneEventfR.
- fIFlagsfR may be an OR-ed combination of any of the following bits:
- .TP 27
- fBTCL_WINDOW_EVENTSfR -
- Process window system events.
- .TP 27
- fBTCL_FILE_EVENTSfR -
- Process file events.
- .TP 27
- fBTCL_TIMER_EVENTSfR -
- Process timer events.
- .TP 27
- fBTCL_IDLE_EVENTSfR -
- Process idle callbacks.
- .TP 27
- fBTCL_ALL_EVENTSfR -
- Process all kinds of events: equivalent to OR-ing together all of the
- above flags or specifying none of them.
- .TP 27
- fBTCL_DONT_WAITfR -
- Don't sleep: process only events that are ready at the time of the
- call.
- .LP
- If any of the flags fBTCL_WINDOW_EVENTSfR, fBTCL_FILE_EVENTSfR,
- fBTCL_TIMER_EVENTSfR, or fBTCL_IDLE_EVENTSfR is set, then the only
- events that will be considered are those for which flags are set.
- Setting none of these flags is equivalent to the value
- fBTCL_ALL_EVENTSfR, which causes all event types to be processed.
- If an application has defined additional event sources with
- fBTcl_CreateEventSourcefR, then additional fIflagfR values
- may also be valid, depending on those event sources.
- .PP
- The fBTCL_DONT_WAITfR flag causes fBTcl_DoOneEventfR not to put
- the process to sleep: it will check for events but if none are found
- then it returns immediately with a return value of 0 to indicate
- that no work was done.
- fBTcl_DoOneEventfR will also return 0 without doing anything if
- the only alternative is to block forever (this can happen, for example,
- if fIflagsfR is fBTCL_IDLE_EVENTSfR and there are no
- fBTcl_DoWhenIdlefR callbacks pending, or if no event handlers or
- timer handlers exist).
- .PP
- fBTcl_DoOneEventfR may be invoked recursively. For example,
- it is possible to invoke fBTcl_DoOneEventfR recursively
- from a handler called by fBTcl_DoOneEventfR. This sort
- of operation is useful in some modal situations, such
- as when a
- notification dialog has been popped up and an application wishes to
- wait for the user to click a button in the dialog before
- doing anything else.
- .SH KEYWORDS
- callback, event, handler, idle, timer