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

通讯编程

开发平台:

Visual C++

  1. '"
  2. '" Copyright (c) 1990 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: RestrictEv.3,v 1.2 1998/09/14 18:22:53 stanton Exp $
  9. '" 
  10. .so man.macros
  11. .TH Tk_RestrictEvents 3 "" Tk "Tk Library Procedures"
  12. .BS
  13. .SH NAME
  14. Tk_RestrictEvents - filter and selectively delay X events
  15. .SH SYNOPSIS
  16. .nf
  17. fB#include <tk.h>fR
  18. .sp
  19. Tk_RestrictProc *
  20. fBTk_RestrictEventsfR(fIproc, clientData, prevClientDataPtrfR)
  21. .SH ARGUMENTS
  22. .AS Tk_RestrictProc **prevClientDataPtr
  23. .AP Tk_RestrictProc *proc in
  24. Predicate procedure to call to filter incoming X events.
  25. NULL means do not restrict events at all.
  26. .AP ClientData clientData in
  27. Arbitrary argument to pass to fIprocfR.
  28. .AP ClientData *prevClientDataPtr out
  29. Pointer to place to save argument to previous restrict procedure.
  30. .BE
  31. .SH DESCRIPTION
  32. .PP
  33. This procedure is useful in certain situations where applications
  34. are only prepared to receive certain X events.  After
  35. fBTk_RestrictEventsfR is called, fBTk_DoOneEventfR (and
  36. hence fBTk_MainLoopfR) will filter X input events through
  37. fIprocfR.  fIProcfR indicates whether a
  38. given event is to be processed immediately, deferred until some
  39. later time (e.g. when the event restriction is lifted), or discarded.
  40. fIProcfR
  41. is a procedure with arguments and result that match
  42. the type fBTk_RestrictProcfR:
  43. .CS
  44. typedef Tk_RestrictAction Tk_RestrictProc(
  45. ClientData fIclientDatafR,
  46. XEvent *fIeventPtrfR);
  47. .CE
  48. The fIclientDatafR argument is a copy of the fIclientDatafR passed
  49. to fBTk_RestrictEventsfR; it may be used to provide fIprocfR with
  50. information it needs to filter events.  The fIeventPtrfR points to
  51. an event under consideration.  fIProcfR returns a restrict action
  52. (enumerated type fBTk_RestrictActionfR) that indicates what
  53. fBTk_DoOneEventfR should do with the event.  If the return value is
  54. fBTK_PROCESS_EVENTfR, then the event will be handled immediately.
  55. If the return value is fBTK_DEFER_EVENTfR, then the event will be
  56. left on the event queue for later processing.  If the return value is
  57. fBTK_DISCARD_EVENTfR, then the event will be removed from the event
  58. queue and discarded without being processed.
  59. .PP
  60. fBTk_RestrictEventsfR uses its return value and fIprevClientDataPtrfR
  61. to return information about the current event restriction procedure
  62. (a NULL return value means there are currently no restrictions).
  63. These values may be used to restore the previous restriction state
  64. when there is no longer any need for the current restriction.
  65. .PP
  66. There are very few places where fBTk_RestrictEventsfR is needed.
  67. In most cases, the best way to restrict events is by changing the
  68. bindings with the fBbindfR Tcl command or by calling
  69. fBTk_CreateEventHandlerfR and fBTk_DeleteEventHandlerfR from C.
  70. The main place where fBTk_RestrictEventsfR must be used is when
  71. performing synchronous actions (for example, if you need to wait
  72. for a particular event to occur on a particular window but you don't
  73. want to invoke any handlers for any other events).  The ``obvious''
  74. solution in these situations is to call fBXNextEventfR or
  75. fBXWindowEventfR, but these procedures cannot be used because
  76. Tk keeps its own event queue that is separate from the X event
  77. queue.  Instead, call fBTk_RestrictEventsfR to set up a filter,
  78. then call fBTk_DoOneEventfR to retrieve the desired event(s).
  79. .SH KEYWORDS
  80. delay, event, filter, restriction