Tk\_Main(3) Tk Library Procedures Tk\_Main(3)

```

```

# [NAME](#NAME)

Tk\_Main - main program for Tk-based applications

# [SYNOPSIS](#SYNOPSIS)

```
#include <tk.h>

Tk_Main(argc, argv, appInitProc)
```

# [ARGUMENTS](#ARGUMENTS)

Tcl\_Size *argc* (in)

Number of elements in *argv*.

char *\*argv\[]* (in)

Array of strings containing command-line arguments. On Windows, when using -DUNICODE, the parameter type changes to wchar\_t \*.

Tcl\_AppInitProc *\*appInitProc* (in)

Address of an application-specific initialization procedure. The value for this argument is usually **Tcl\_AppInit**.

```
    
```

# [DESCRIPTION](#DESCRIPTION)

**Tk\_Main** acts as the main program for most Tk-based applications. Starting with Tk 4.0 it is not called **main** anymore because it is part of the Tk library and having a function **main** in a library (particularly a shared library) causes problems on many systems. Having **main** in the Tk library would also make it hard to use Tk in C++ programs, since C++ programs must have special C++ **main** functions.

Normally each application contains a small **main** function that does nothing but invoke **Tk\_Main**. **Tk\_Main** then does all the work of creating and running a **wish**-like application.

When it is has finished its own initialization, but before it processes commands, **Tk\_Main** calls the procedure given by the *appInitProc* argument. This procedure provides a “hook” for the application to perform its own initialization, such as defining application-specific commands. The procedure must have an interface that matches the type **Tcl\_AppInitProc**:

```
typedef int Tcl_AppInitProc(


        Tcl_Interp *interp);
```

*AppInitProc* is almost always a pointer to **Tcl\_AppInit**; for more details on this procedure, see the documentation for **Tcl\_AppInit**.

**Tk\_Main** functions much the same as **Tcl\_Main**. In particular, **Tk\_Main** supports both an interactive mode and a startup script mode, with the file name and encoding of a startup script under the control of the **Tcl\_SetStartupScript** and **Tcl\_GetStartupScript** routines. However it calls **Tk\_MainLoop** after processing any supplied script, and in interactive uses events registered with **Tcl\_CreateFileHandler** to process user input.

# [SEE ALSO](#SEE_ALSO)

[Tcl\_DoOneEvent(3)](/man/os/tk/Tcl_DoOneEvent.3)

# [KEYWORDS](#KEYWORDS)

application-specific initialization, command-line arguments, main program

4.0 Tk

---

Document: Tk_Main(3) from tk 9.0.4-r2 (Chainguard OS)
Source: https://downloads.sourceforge.net/sourceforge/tcl/tk9.0.4-src.tar.gz
