---
name: "copywin"
section: "3"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["freebsd"]
url: "https://new.carta.tech/copywin"
---

# copywin(3)

overlay curses windows and manipulate them

## NAME

**overlay**, **overwrite**, **copywin** - overlay *curses* windows and manipulate them

## SYNOPSIS

```
#include <curses.h>
```

**int overlay(const WINDOW \****srcwin***, WINDOW \****dstwin***);** **int overwrite(const WINDOW \****srcwin***, WINDOW \****dstwin***);** **int copywin(const WINDOW \****srcwin***, WINDOW \****dstwin***, int** *sminrow***,**\
       **int** *smincol***, int** *dminrow***, int** *dmincol***, int** *dmaxrow***,**\
       **int** *dmaxcol***, int** *overlay***);**

## DESCRIPTION

### overlay, overwrite

The **overlay** and **overwrite** routines overlay *srcwin* on top of *dstwin*. *scrwin* and *dstwin* are not required to be the same size; only text where the two windows overlap is copied. The difference is that **overlay** is non-destructive (blanks are not copied) whereas **overwrite** is destructive.

### copywin

The **copywin** routine provides a finer granularity of control over the **overlay** and **overwrite** routines. As in the **prefresh** routine, a rectangle is specified in the destination window, (*dminrow*, *dmincol*) and (*dmaxrow*, *dmaxcol*), and the upper-left-corner coordinates of the source window, (*sminrow*, *smincol*). If the argument *overlay* is **true**, then copying is non-destructive, as in **overlay**.

## RETURN VALUE

These functions return **OK** on success and **ERR** on failure.

In *ncurses*, they return **ERR** if

- •

  either of the window pointers are null, or

- •

  any part of the window would be placed off-screen.

## NOTES

**overlay** and **overwrite** may be implemented as macros.

## PORTABILITY

X/Open Curses Issue 4 describes these functions. It specifies no error conditions for them. It adds *const* qualifiers to the arguments. It further specifies their behavior in the presence of characters with multibyte renditions (not yet supported in this implementation).

SVr4 describes a successful return value only as “an integer value other than *ERR*”.

## SEE ALSO

**curses**(3X), **curs\_pad**(3X), **curs\_refresh**(3X)
