DoOneEvent.3
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:4k
源码类别:

通讯编程

开发平台:

Visual C++

  1. '"
  2. '" Copyright (c) 1990-1992 The Regents of the University of California.
  3. '" Copyright (c) 1994-1996 Sun Microsystems, Inc.
  4. '"
  5. '" See the file "license.terms" for information on usage and redistribution
  6. '" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
  7. '" 
  8. '" RCS: @(#) $Id: DoOneEvent.3,v 1.2 1998/09/14 18:39:48 stanton Exp $
  9. '" 
  10. .so man.macros
  11. .TH Tcl_DoOneEvent 3 7.5 Tcl "Tcl Library Procedures"
  12. .BS
  13. .SH NAME
  14. Tcl_DoOneEvent - wait for events and invoke event handlers
  15. .SH SYNOPSIS
  16. .nf
  17. fB#include <tcl.h>fR
  18. .sp
  19. int
  20. fBTcl_DoOneEventfR(fIflagsfR)
  21. .SH ARGUMENTS
  22. .AS int flags
  23. .AP int flags in
  24. This parameter is normally zero.  It may be an OR-ed combination
  25. of any of the following flag bits:  
  26. TCL_WINDOW_EVENTS,
  27. TCL_FILE_EVENTS, TCL_TIMER_EVENTS, TCL_IDLE_EVENTS, TCL_ALL_EVENTS, or
  28. TCL_DONT_WAIT.
  29. .BE
  30. .SH DESCRIPTION
  31. .PP
  32. This procedure is the entry point to Tcl's event loop; it is responsible for
  33. waiting for events and dispatching event handlers created with
  34. procedures such as fBTk_CreateEventHandlerfR, fBTcl_CreateFileHandlerfR,
  35. fBTcl_CreateTimerHandlerfR, and fBTcl_DoWhenIdlefR.
  36. fBTcl_DoOneEventfR checks to see if
  37. events are already present on the Tcl event queue; if so,
  38. it calls the handler(s) for the first (oldest) event, removes it from
  39. the queue, and returns.
  40. If there are no events ready to be handled, then fBTcl_DoOneEventfR
  41. checks for new events from all possible sources.
  42. If any are found, it puts all of them on Tcl's event queue, calls
  43. handlers for the first event on the queue, and returns.
  44. If no events are found, fBTcl_DoOneEventfR checks for fBTcl_DoWhenIdlefR
  45. callbacks; if any are found, it invokes all of them and returns.
  46. Finally, if no events or idle callbacks have been found, then
  47. fBTcl_DoOneEventfR sleeps until an event occurs; then it adds any 
  48. new events to the Tcl event queue, calls handlers for the first event,
  49. and returns.
  50. The normal return value is 1 to signify that some event
  51. was processed (see below for other alternatives).
  52. .PP
  53. If the fIflagsfR argument to fBTcl_DoOneEventfR is non-zero,
  54. it restricts the kinds of events that will be processed by
  55. fBTcl_DoOneEventfR.
  56. fIFlagsfR may be an OR-ed combination of any of the following bits:
  57. .TP 27
  58. fBTCL_WINDOW_EVENTSfR -
  59. Process window system events.
  60. .TP 27
  61. fBTCL_FILE_EVENTSfR -
  62. Process file events.
  63. .TP 27
  64. fBTCL_TIMER_EVENTSfR -
  65. Process timer events.
  66. .TP 27
  67. fBTCL_IDLE_EVENTSfR -
  68. Process idle callbacks.
  69. .TP 27
  70. fBTCL_ALL_EVENTSfR -
  71. Process all kinds of events:  equivalent to OR-ing together all of the
  72. above flags or specifying none of them.
  73. .TP 27
  74. fBTCL_DONT_WAITfR -
  75. Don't sleep:  process only events that are ready at the time of the
  76. call.
  77. .LP
  78. If any of the flags fBTCL_WINDOW_EVENTSfR, fBTCL_FILE_EVENTSfR,
  79. fBTCL_TIMER_EVENTSfR, or fBTCL_IDLE_EVENTSfR is set, then the only
  80. events that will be considered are those for which flags are set.
  81. Setting none of these flags is equivalent to the value
  82. fBTCL_ALL_EVENTSfR, which causes all event types to be processed.
  83. If an application has defined additional event sources with
  84. fBTcl_CreateEventSourcefR, then additional fIflagfR values
  85. may also be valid, depending on those event sources.
  86. .PP
  87. The fBTCL_DONT_WAITfR flag causes fBTcl_DoOneEventfR not to put
  88. the process to sleep:  it will check for events but if none are found
  89. then it returns immediately with a return value of 0 to indicate
  90. that no work was done.
  91. fBTcl_DoOneEventfR will also return 0 without doing anything if
  92. the only alternative is to block forever (this can happen, for example,
  93. if fIflagsfR is fBTCL_IDLE_EVENTSfR and there are no
  94. fBTcl_DoWhenIdlefR callbacks pending, or if no event handlers or
  95. timer handlers exist).
  96. .PP
  97. fBTcl_DoOneEventfR may be invoked recursively.  For example,
  98. it is possible to invoke fBTcl_DoOneEventfR recursively
  99. from a handler called by fBTcl_DoOneEventfR.  This sort
  100. of operation is useful in some modal situations, such
  101. as when a
  102. notification dialog has been popped up and an application wishes to
  103. wait for the user to click a button in the dialog before
  104. doing anything else.
  105. .SH KEYWORDS
  106. callback, event, handler, idle, timer