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

通讯编程

开发平台:

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: CrtErrHdlr.3,v 1.2 1998/09/14 18:22:46 stanton Exp $
  9. '" 
  10. .so man.macros
  11. .TH Tk_CreateErrorHandler 3 "" Tk "Tk Library Procedures"
  12. .BS
  13. .SH NAME
  14. Tk_CreateErrorHandler, Tk_DeleteErrorHandler - handle X protocol errors
  15. .SH SYNOPSIS
  16. .nf
  17. fB#include <tk.h>fR
  18. .sp
  19. Tk_ErrorHandler
  20. fBTk_CreateErrorHandlerfR(fIdisplay, error, request, minor, proc, clientDatafR)
  21. .sp
  22. fBTk_DeleteErrorHandlerfR(fIhandlerfR)
  23. .SH ARGUMENTS
  24. .AS "Tk_ErrorHandler" clientData
  25. .AP Display *display in
  26. Display whose errors are to be handled.
  27. .AP int error in
  28. Match only error events with this value in the fIerror_codefR
  29. field.  If -1, then match any fIerror_codefR value.
  30. .AP int request in
  31. Match only error events with this value in the fIrequest_codefR
  32. field.  If -1, then match any fIrequest_codefR value.
  33. .AP int minor in
  34. Match only error events with this value in the fIminor_codefR
  35. field.  If -1, then match any fIminor_codefR value.
  36. .AP Tk_ErrorProc *proc in
  37. Procedure to invoke whenever an error event is received for
  38. fIdisplayfR and matches fIerrorfR, fIrequestfR, and fIminorfR.
  39. NULL means ignore any matching errors.
  40. .AP ClientData clientData in
  41. Arbitrary one-word value to pass to fIprocfR.
  42. .AP Tk_ErrorHandler handler in
  43. Token for error handler to delete (return value from a previous
  44. call to fBTk_CreateErrorHandlerfR).
  45. .BE
  46. .SH DESCRIPTION
  47. .PP
  48. fBTk_CreateErrorHandlerfR arranges for a particular procedure
  49. (fIprocfR) to be called whenever certain protocol errors occur on a
  50. particular display (fIdisplayfR).  Protocol errors occur when
  51. the X protocol is used incorrectly, such as attempting to map a window
  52. that doesn't exist.  See the Xlib documentation for fBXSetErrorHandlerfR
  53. for more information on the kinds of errors that can occur.
  54. For fIprocfR to be invoked
  55. to handle a particular error, five things must occur:
  56. .IP [1]
  57. The error must pertain to fIdisplayfR.
  58. .IP [2]
  59. Either the fIerrorfR argument to fBTk_CreateErrorHandlerfR
  60. must have been -1, or the fIerrorfR argument must match
  61. the fIerror_codefR field from the error event.
  62. .IP [3]
  63. Either the fIrequestfR argument to fBTk_CreateErrorHandlerfR
  64. must have been -1, or the fIrequestfR argument must match
  65. the fIrequest_codefR field from the error event.
  66. .IP [4]
  67. Either the fIminorfR argument to fBTk_CreateErrorHandlerfR
  68. must have been -1, or the fIminorfR argument must match
  69. the fIminor_codefR field from the error event.
  70. .IP [5]
  71. The protocol request to which the error pertains must have been
  72. made when the handler was active (see below for more information).
  73. .PP
  74. fIProcfR should have arguments and result that match the
  75. following type:
  76. .CS
  77. typedef int Tk_ErrorProc(
  78. ClientData fIclientDatafR,
  79. XErrorEvent *fIerrEventPtrfR);
  80. .CE
  81. The fIclientDatafR parameter to fIprocfR is a copy of the fIclientDatafR
  82. argument given to fBTcl_CreateErrorHandlerfR when the callback
  83. was created.  Typically, fIclientDatafR points to a data
  84. structure containing application-specific information that is
  85. needed to deal with the error.  fIErrEventPtrfR is
  86. a pointer to the X error event.
  87. The procedure fIprocfR should return an integer value.  If it
  88. returns 0 it means that fIprocfR handled the error completely and there
  89. is no need to take any other action for the error.  If it returns
  90. non-zero it means fIprocfR was unable to handle the error.
  91. .PP
  92. If a value of NULL is specified for fIprocfR, all matching errors
  93. will be ignored:  this will produce the same result as if a procedure
  94. had been specified that always returns 0.
  95. .PP
  96. If more than more than one handler matches a particular error, then
  97. they are invoked in turn.  The handlers will be invoked in reverse
  98. order of creation:  most recently declared handler first.
  99. If any handler returns 0, then subsequent (older) handlers will
  100. not be invoked.  If no handler returns 0, then Tk invokes X'es
  101. default error handler, which prints an error message and aborts the
  102. program.  If you wish to have a default handler that deals with errors
  103. that no other handler can deal with, then declare it first.
  104. .PP
  105. The X documentation states that ``the error handler should not call
  106. any functions (directly or indirectly) on the display that will
  107. generate protocol requests or that will look for input events.''
  108. This restriction applies to handlers declared by fBTk_CreateErrorHandlerfR;
  109. disobey it at your own risk.
  110. .PP
  111. fBTk_DeleteErrorHandlerfR may be called to delete a
  112. previously-created error handler.  The fIhandlerfR argument
  113. identifies the error handler, and should be a value returned by
  114. a previous call to fBTk_CreateEventHandlerfR.
  115. .PP
  116. A particular error handler applies to errors resulting
  117. from protocol requests generated between
  118. the call to fBTk_CreateErrorHandlerfR and the call to
  119. fBTk_DeleteErrorHandlerfR.  However, the actual callback
  120. to fIprocfR may not occur until after the fBTk_DeleteErrorHandlerfR
  121. call, due to buffering in the client and server.
  122. If an error event pertains to
  123. a protocol request made just before calling fBTk_DeleteErrorHandlerfR,
  124. then the error event may not have been processed
  125. before the fBTk_DeleteErrorHandlerfR
  126. call.  When this situation arises, Tk will save information about
  127. the handler and
  128. invoke the handler's fIprocfR later when the error event
  129. finally arrives.
  130. If an application wishes to delete an error handler and know
  131. for certain that all relevant errors have been processed,
  132. it should first call fBTk_DeleteErrorHandlerfR and then
  133. call fBXSyncfR;  this will flush out any buffered requests and errors,
  134. but will result in a performance penalty because
  135. it requires communication to and from the X server.  After the
  136. fBXSyncfR call Tk is guaranteed not to call any error
  137. handlers deleted before the fBXSyncfR call.
  138. .PP
  139. For the Tk error handling mechanism to work properly, it is essential
  140. that application code never calls fBXSetErrorHandlerfR directly;
  141. applications should use only fBTk_CreateErrorHandlerfR.
  142. .SH KEYWORDS
  143. callback, error, event, handler