archie/tk3.6/doc/CrtGenHdlr.3
2024-05-27 16:13:40 +02:00

102 lines
4.1 KiB
Groff

'\"
'\" Copyright (c) 19922 The Regents of the University of California.
'\" All rights reserved.
'\"
'\" Permission is hereby granted, without written agreement and without
'\" license or royalty fees, to use, copy, modify, and distribute this
'\" documentation for any purpose, provided that the above copyright
'\" notice and the following two paragraphs appear in all copies.
'\"
'\" IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
'\" FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
'\" ARISING OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF THE UNIVERSITY OF
'\" CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
'\"
'\" THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
'\" INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
'\" AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
'\" ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO
'\" PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
'\"
'\" $Header: /user6/ouster/wish/man/RCS/CrtGenHdlr.3,v 1.3 93/04/01 09:41:14 ouster Exp $ SPRITE (Berkeley)
'\"
.so man.macros
.HS Tk_CreateGenericHandler tkc
.BS
.SH NAME
Tk_CreateGenericHandler, Tk_DeleteGenericHandler \- associate procedure callback with all X events
.SH SYNOPSIS
.nf
\fB#include <tk.h>\fR
.sp
\fBTk_CreateGenericHandler\fR(\fIproc, clientData\fR)
.sp
\fBTk_DeleteGenericHandler\fR(\fIproc, clientData\fR)
.SH ARGUMENTS
.AS "Tk_GenericProc" clientData
.AP Tk_GenericProc *proc in
Procedure to invoke whenever any X event occurs on any display.
.AP ClientData clientData in
Arbitrary one-word value to pass to \fIproc\fR.
.BE
.SH DESCRIPTION
.PP
\fBTk_CreateGenericHandler\fR arranges for \fIproc\fR to be
invoked in the future whenever any X event occurs. This mechanism is
\fInot\fR intended for dispatching X events on windows managed by Tk
(you should use \fBTk_CreateEventHandler\fR for this purpose).
\fBTk_CreateGenericHandler\fR is intended for other purposes, such
as tracing X events, monitoring events on windows not owned by Tk,
accessing X-related libraries that were not originally designed for
use with Tk, and so on.
.PP
The callback to \fIproc\fR will be made by \fBTk_HandleEvent\fR;
this mechanism only works in programs that dispatch events
through \fBTk_HandleEvent\fR (or through other Tk procedures that
call \fBTk_HandleEvent\fR, such as \fBTk_DoOneEvent\fR or
\fBTk_MainLoop\fR).
.PP
\fIProc\fP should have arguments and result that match the
type \fBTk_GenericProc\fR:
.nf
.RS
typedef int Tk_GenericProc(
.RS
ClientData \fIclientData\fR,
XEvent *\fIeventPtr\fR);
.RE
.RE
.fi
The \fIclientData\fP parameter to \fIproc\fR is a copy of the \fIclientData\fP
argument given to \fBTk_CreateGenericHandler\fR when the callback
was created. Typically, \fIclientData\fR points to a data
structure containing application-specific information about
how to handle events.
\fIEventPtr\fR is a pointer to the X event.
.PP
Whenever an X event is processed by \fBTk_HandleEvent\fR, \fIproc\fR
is called. The return value from \fIproc\fR is normally 0.
A non-zero return value indicates that the event is not to be handled
further; that is, \fIproc\fR has done all processing that is to be
allowed for the event.
.PP
If there are multiple generic event handlers, each one is called
for each event, in the order in which they were established.
.PP
\fBTk_DeleteGenericHandler\fR may be called to delete a
previously-created generic event handler: it deletes each handler
it finds that matches the \fIproc\fR and \fIclientData\fR arguments. If
no such handler exists, then \fBTk_DeleteGenericHandler\fR returns
without doing anything. Although Tk supports it, it's probably
a bad idea to have more than one callback with the same
\fIproc\fR and \fIclientData\fR arguments.
.PP
Establishing a generic event handler does nothing to ensure that the
process will actually receive the X events that the handler wants to
process.
For example, it is the caller's responsibility to invoke
\fBXSelectInput\fR to select the desired events, if that is necessary.
.SH KEYWORDS
bind, callback, event, handler