📄 crterrhdlr.3
字号:
'\"'\" Copyright (c) 1990 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.'\" '\" SCCS: @(#) CrtErrHdlr.3 1.12 96/03/26 18:05:30'\" .so man.macros.TH Tk_CreateErrorHandler 3 "" Tk "Tk Library Procedures".BS.SH NAMETk_CreateErrorHandler, Tk_DeleteErrorHandler \- handle X protocol errors.SH SYNOPSIS.nf\fB#include <tk.h>\fR.spTk_ErrorHandler\fBTk_CreateErrorHandler\fR(\fIdisplay, error, request, minor, proc, clientData\fR).sp\fBTk_DeleteErrorHandler\fR(\fIhandler\fR).SH ARGUMENTS.AS "Tk_ErrorHandler" clientData.AP Display *display inDisplay whose errors are to be handled..AP int error inMatch only error events with this value in the \fIerror_code\fRfield. If -1, then match any \fIerror_code\fR value..AP int request inMatch only error events with this value in the \fIrequest_code\fRfield. If -1, then match any \fIrequest_code\fR value..AP int minor inMatch only error events with this value in the \fIminor_code\fRfield. If -1, then match any \fIminor_code\fR value..AP Tk_ErrorProc *proc inProcedure to invoke whenever an error event is received for\fIdisplay\fR and matches \fIerror\fR, \fIrequest\fR, and \fIminor\fR.NULL means ignore any matching errors..AP ClientData clientData inArbitrary one-word value to pass to \fIproc\fR..AP Tk_ErrorHandler handler inToken for error handler to delete (return value from a previouscall to \fBTk_CreateErrorHandler\fR)..BE.SH DESCRIPTION.PP\fBTk_CreateErrorHandler\fR arranges for a particular procedure(\fIproc\fR) to be called whenever certain protocol errors occur on aparticular display (\fIdisplay\fR). Protocol errors occur whenthe X protocol is used incorrectly, such as attempting to map a windowthat doesn't exist. See the Xlib documentation for \fBXSetErrorHandler\fRfor more information on the kinds of errors that can occur.For \fIproc\fR to be invokedto handle a particular error, five things must occur:.IP [1]The error must pertain to \fIdisplay\fR..IP [2]Either the \fIerror\fR argument to \fBTk_CreateErrorHandler\fRmust have been -1, or the \fIerror\fR argument must matchthe \fIerror_code\fR field from the error event..IP [3]Either the \fIrequest\fR argument to \fBTk_CreateErrorHandler\fRmust have been -1, or the \fIrequest\fR argument must matchthe \fIrequest_code\fR field from the error event..IP [4]Either the \fIminor\fR argument to \fBTk_CreateErrorHandler\fRmust have been -1, or the \fIminor\fR argument must matchthe \fIminor_code\fR field from the error event..IP [5]The protocol request to which the error pertains must have beenmade when the handler was active (see below for more information)..PP\fIProc\fR should have arguments and result that match thefollowing type:.CStypedef int Tk_ErrorProc( ClientData \fIclientData\fR, XErrorEvent *\fIerrEventPtr\fR);.CEThe \fIclientData\fR parameter to \fIproc\fR is a copy of the \fIclientData\fRargument given to \fBTcl_CreateErrorHandler\fR when the callbackwas created. Typically, \fIclientData\fR points to a datastructure containing application-specific information that isneeded to deal with the error. \fIErrEventPtr\fR isa pointer to the X error event.The procedure \fIproc\fR should return an integer value. If itreturns 0 it means that \fIproc\fR handled the error completely and thereis no need to take any other action for the error. If it returnsnon-zero it means \fIproc\fR was unable to handle the error..PPIf a value of NULL is specified for \fIproc\fR, all matching errorswill be ignored: this will produce the same result as if a procedurehad been specified that always returns 0..PPIf more than more than one handler matches a particular error, thenthey are invoked in turn. The handlers will be invoked in reverseorder of creation: most recently declared handler first.If any handler returns 0, then subsequent (older) handlers willnot be invoked. If no handler returns 0, then Tk invokes X'esdefault error handler, which prints an error message and aborts theprogram. If you wish to have a default handler that deals with errorsthat no other handler can deal with, then declare it first..PPThe X documentation states that ``the error handler should not callany functions (directly or indirectly) on the display that willgenerate protocol requests or that will look for input events.''This restriction applies to handlers declared by \fBTk_CreateErrorHandler\fR;disobey it at your own risk..PP\fBTk_DeleteErrorHandler\fR may be called to delete apreviously-created error handler. The \fIhandler\fR argumentidentifies the error handler, and should be a value returned bya previous call to \fBTk_CreateEventHandler\fR..PPA particular error handler applies to errors resultingfrom protocol requests generated betweenthe call to \fBTk_CreateErrorHandler\fR and the call to\fBTk_DeleteErrorHandler\fR. However, the actual callbackto \fIproc\fR may not occur until after the \fBTk_DeleteErrorHandler\fRcall, due to buffering in the client and server.If an error event pertains toa protocol request made just before calling \fBTk_DeleteErrorHandler\fR,then the error event may not have been processedbefore the \fBTk_DeleteErrorHandler\fRcall. When this situation arises, Tk will save information aboutthe handler andinvoke the handler's \fIproc\fR later when the error eventfinally arrives.If an application wishes to delete an error handler and knowfor certain that all relevant errors have been processed,it should first call \fBTk_DeleteErrorHandler\fR and thencall \fBXSync\fR; this will flush out any buffered requests and errors,but will result in a performance penalty becauseit requires communication to and from the X server. After the\fBXSync\fR call Tk is guaranteed not to call any errorhandlers deleted before the \fBXSync\fR call..PPFor the Tk error handling mechanism to work properly, it is essentialthat application code never calls \fBXSetErrorHandler\fR directly;applications should use only \fBTk_CreateErrorHandler\fR..SH KEYWORDScallback, error, event, handler
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -