---
name: "EventHndlr"
section: "3tk"
platform: "linux"
package: "tk8.3-doc"
version: "8.3.5-14"
release: "Debian 5.0 (Lenny)"
platforms: ["linux"]
url: "https://new.carta.tech/EventHndlr/3tk"
---

# EventHndlr(3tk)

associate procedure callback with an X event

```

```

## NAME

Tk\_CreateEventHandler, Tk\_DeleteEventHandler - associate procedure callback with an X event

## SYNOPSIS

```
#include <tk.h>

Tk_CreateEventHandler(tkwin, mask, proc, clientData)

Tk_DeleteEventHandler(tkwin, mask, proc, clientData)
```

## ARGUMENTS

- Tk\_Window *tkwin* (in)

  Token for window in which events may occur.

- unsigned long *mask* (in)

  Bit-mask of events (such as **ButtonPressMask**) for which *proc* should be called.

- Tk\_EventProc *\*proc* (in)

  Procedure to invoke whenever an event in *mask* occurs in the window given by *tkwin*.

- ClientData *clientData* (in)

  Arbitrary one-word value to pass to *proc*.

  ```

  ```

## DESCRIPTION

**Tk\_CreateEventHandler** arranges for *proc* to be invoked in the future whenever one of the event types specified by *mask* occurs in the window specified by *tkwin*. The callback to *proc* will be made by **Tk\_HandleEvent**; this mechanism only works in programs that dispatch events through **Tk\_HandleEvent** (or through other Tk procedures that call **Tk\_HandleEvent**, such as **Tk\_DoOneEvent** or **Tk\_MainLoop**).

*Proc* should have arguments and result that match the type **Tk\_EventProc**:

```
typedef void Tk_EventProc(
	ClientData clientData,
	XEvent *eventPtr);
```

The *clientData* parameter to *proc* is a copy of the *clientData* argument given to **Tk\_CreateEventHandler** when the callback was created.  Typically, *clientData* points to a data structure containing application-specific information about the window in which the event occurred.  *EventPtr* is a pointer to the X event, which will be one of the ones specified in the *mask* argument to **Tk\_CreateEventHandler**.

**Tk\_DeleteEventHandler** may be called to delete a previously-created event handler:  it deletes the first handler it finds that is associated with *tkwin* and matches the *mask*, *proc*, and *clientData* arguments.  If no such handler exists, then **Tk\_HandleEvent** returns without doing anything.  Although Tk supports it, it's probably a bad idea to have more than one callback with the same *mask*, *proc*, and *clientData* arguments. When a window is deleted all of its handlers will be deleted automatically;  in this case there is no need to call **Tk\_DeleteEventHandler**.

If multiple handlers are declared for the same type of X event on the same window, then the handlers will be invoked in the order they were created.

## KEYWORDS

bind, callback, event, handler
