7b7efddb6b7590e2da91a14d90c4bf4667a4eae1
[ncurses.git] / doc / html / man / curs_window.3x.html
1 <!-- 
2   ****************************************************************************
3   * Copyright (c) 1998-2014,2015 Free Software Foundation, Inc.              *
4   *                                                                          *
5   * Permission is hereby granted, free of charge, to any person obtaining a  *
6   * copy of this software and associated documentation files (the            *
7   * "Software"), to deal in the Software without restriction, including      *
8   * without limitation the rights to use, copy, modify, merge, publish,      *
9   * distribute, distribute with modifications, sublicense, and/or sell       *
10   * copies of the Software, and to permit persons to whom the Software is    *
11   * furnished to do so, subject to the following conditions:                 *
12   *                                                                          *
13   * The above copyright notice and this permission notice shall be included  *
14   * in all copies or substantial portions of the Software.                   *
15   *                                                                          *
16   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
17   * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
18   * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
19   * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
20   * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
21   * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
22   * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
23   *                                                                          *
24   * Except as contained in this notice, the name(s) of the above copyright   *
25   * holders shall not be used in advertising or otherwise to promote the     *
26   * sale, use or other dealings in this Software without prior written       *
27   * authorization.                                                           *
28   ****************************************************************************
29   * @Id: curs_window.3x,v 1.19 2015/07/21 08:25:23 tom Exp @
30 -->
31 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
32 <HTML>
33 <HEAD>
34 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
35 <meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
36 <TITLE>curs_window 3x</TITLE>
37 <link rev=made href="mailto:bug-ncurses@gnu.org">
38 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
39 </HEAD>
40 <BODY>
41 <H1 class="no-header">curs_window 3x</H1>
42 <PRE>
43 <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG>                                         <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG>
44
45
46
47
48 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
49        <STRONG>newwin</STRONG>, <STRONG>delwin</STRONG>, <STRONG>mvwin</STRONG>, <STRONG>subwin</STRONG>, <STRONG>derwin</STRONG>, <STRONG>mvderwin</STRONG>, <STRONG>dupwin</STRONG>,
50        <STRONG>wsyncup</STRONG>, <STRONG>syncok</STRONG>, <STRONG>wcursyncup</STRONG>, <STRONG>wsyncdown</STRONG> - create <STRONG>curses</STRONG>
51        windows
52
53
54 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
55        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
56
57        <STRONG>WINDOW</STRONG> <STRONG>*newwin(</STRONG>
58              <STRONG>int</STRONG> <EM>nlines</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>ncols</EM><STRONG>,</STRONG>
59              <STRONG>int</STRONG> <EM>begin</EM><STRONG>_</STRONG><EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>begin</EM><STRONG>_</STRONG><EM>x</EM><STRONG>);</STRONG>
60        <STRONG>int</STRONG> <STRONG>delwin(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG>
61        <STRONG>int</STRONG> <STRONG>mvwin(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>);</STRONG>
62        <STRONG>WINDOW</STRONG> <STRONG>*subwin(WINDOW</STRONG> <STRONG>*</STRONG><EM>orig</EM><STRONG>,</STRONG>
63              <STRONG>int</STRONG> <EM>nlines</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>ncols</EM><STRONG>,</STRONG>
64              <STRONG>int</STRONG> <EM>begin</EM><STRONG>_</STRONG><EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>begin</EM><STRONG>_</STRONG><EM>x</EM><STRONG>);</STRONG>
65        <STRONG>WINDOW</STRONG> <STRONG>*derwin(WINDOW</STRONG> <STRONG>*</STRONG><EM>orig</EM><STRONG>,</STRONG>
66              <STRONG>int</STRONG> <EM>nlines</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>ncols</EM><STRONG>,</STRONG>
67              <STRONG>int</STRONG> <EM>begin</EM><STRONG>_</STRONG><EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>begin</EM><STRONG>_</STRONG><EM>x</EM><STRONG>);</STRONG>
68        <STRONG>int</STRONG> <STRONG>mvderwin(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>par</EM><STRONG>_</STRONG><EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>par</EM><STRONG>_</STRONG><EM>x</EM><STRONG>);</STRONG>
69        <STRONG>WINDOW</STRONG> <STRONG>*dupwin(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG>
70        <STRONG>void</STRONG> <STRONG>wsyncup(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG>
71        <STRONG>int</STRONG> <STRONG>syncok(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG>
72        <STRONG>void</STRONG> <STRONG>wcursyncup(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG>
73        <STRONG>void</STRONG> <STRONG>wsyncdown(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG>
74
75
76 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
77
78 </PRE><H3><a name="h3-newwin">newwin</a></H3><PRE>
79        Calling <STRONG>newwin</STRONG> creates and returns a pointer to a new win-
80        dow with the given number of lines and columns.  The upper
81        left-hand corner of the window is at
82               line <EM>begin</EM>_<EM>y</EM>,
83               column <EM>begin</EM>_<EM>x</EM>
84
85        If either <EM>nlines</EM> or <EM>ncols</EM> is zero, they default to
86               <STRONG>LINES</STRONG> <STRONG>-</STRONG> <EM>begin</EM>_<EM>y</EM> and
87               <STRONG>COLS</STRONG> <STRONG>-</STRONG> <EM>begin</EM>_<EM>x</EM>.
88
89        A   new   full-screen   window   is   created  by  calling
90        <STRONG>newwin(0,0,0,0)</STRONG>.
91
92
93 </PRE><H3><a name="h3-delwin">delwin</a></H3><PRE>
94        Calling <STRONG>delwin</STRONG> deletes the named window, freeing all memo-
95        ry associated with it (it does not actually erase the win-
96        dow's screen image).  Subwindows must  be  deleted  before
97        the main window can be deleted.
98
99
100 </PRE><H3><a name="h3-mvwin">mvwin</a></H3><PRE>
101        Calling <STRONG>mvwin</STRONG> moves the window so that the upper left-hand
102        corner is at position (<EM>x</EM>, <EM>y</EM>).  If the move would cause the
103        window to be off the screen, it is an error and the window
104        is not moved.  Moving subwindows is allowed, but should be
105        avoided.
106
107
108 </PRE><H3><a name="h3-subwin">subwin</a></H3><PRE>
109        Calling <STRONG>subwin</STRONG> creates and returns a pointer to a new win-
110        dow with the given number of lines, <EM>nlines</EM>,  and  columns,
111        <EM>ncols</EM>.   The  window  is at position (<EM>begin</EM>_<EM>y</EM>, <EM>begin</EM>_<EM>x</EM>) on
112        the screen.  The subwindow shares memory with  the  window
113        <EM>orig</EM>,  so that changes made to one window will affect both
114        windows.  When using this routine, it is necessary to call
115        <STRONG>touchwin</STRONG>  or  <STRONG>touchline</STRONG> on <EM>orig</EM> before calling <STRONG>wrefresh</STRONG> on
116        the subwindow.
117
118
119 </PRE><H3><a name="h3-derwin">derwin</a></H3><PRE>
120        Calling <STRONG>derwin</STRONG> is the same as calling <STRONG>subwin,</STRONG> except  that
121        <EM>begin</EM>_<EM>y</EM> and <EM>begin</EM>_<EM>x</EM> are relative to the origin of the win-
122        dow <EM>orig</EM> rather than the screen.  There is  no  difference
123        between the subwindows and the derived windows.
124
125        Calling <STRONG>mvderwin</STRONG> moves a derived window (or subwindow) in-
126        side its parent window.  The screen-relative parameters of
127        the  window are not changed.  This routine is used to dis-
128        play different parts of the  parent  window  at  the  same
129        physical position on the screen.
130
131
132 </PRE><H3><a name="h3-dupwin">dupwin</a></H3><PRE>
133        Calling  <STRONG>dupwin</STRONG>  creates  an exact duplicate of the window
134        <EM>win</EM>.
135
136
137 </PRE><H3><a name="h3-wsyncup">wsyncup</a></H3><PRE>
138        Calling <STRONG>wsyncup</STRONG> touches all locations in ancestors of  <EM>win</EM>
139        that  are changed in <EM>win</EM>.  If <STRONG>syncok</STRONG> is called with second
140        argument <STRONG>TRUE</STRONG> then <STRONG>wsyncup</STRONG> is called automatically whenev-
141        er there is a change in the window.
142
143
144 </PRE><H3><a name="h3-wsyncdown">wsyncdown</a></H3><PRE>
145        The  <STRONG>wsyncdown</STRONG>  routine  touches each location in <EM>win</EM> that
146        has been touched in any of  its  ancestor  windows.   This
147        routine  is  called by <STRONG>wrefresh</STRONG>, so it should almost never
148        be necessary to call it manually.
149
150
151 </PRE><H3><a name="h3-wcursyncup">wcursyncup</a></H3><PRE>
152        The routine <STRONG>wcursyncup</STRONG> updates the current cursor position
153        of  all the ancestors of the window to reflect the current
154        cursor position of the window.
155
156
157 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
158        Routines that return an integer return the integer <STRONG>ERR</STRONG> up-
159        on  failure  and <STRONG>OK</STRONG> (SVr4 only specifies "an integer value
160        other than <STRONG>ERR</STRONG>") upon successful completion.
161
162        Routines that return pointers return <STRONG>NULL</STRONG> on error.
163
164        X/Open defines no error conditions.  In  this  implementa-
165        tion
166
167        <STRONG>delwin</STRONG>
168             returns an error if the window pointer is null, or if
169             the window is the parent of another window.
170
171        <STRONG>derwin</STRONG>
172             returns an error if  the  parent  window  pointer  is
173             null,  or  if  any  of its ordinates or dimensions is
174             negative, or if the resulting window does not fit in-
175             side the parent window.
176
177        <STRONG>dupwin</STRONG>
178             returns an error if the window pointer is null.
179
180             This implementation also maintains a list of windows,
181             and checks that the pointer passed to <STRONG>delwin</STRONG>  is  one
182             that it created, returning an error if it was not..
183
184        <STRONG>mvderwin</STRONG>
185             returns an error if the window pointer is null, or if
186             some part of the window would be placed off-screen.
187
188        <STRONG>mvwin</STRONG>
189             returns an error if the window pointer is null, or if
190             the  window  is  really a pad, or if some part of the
191             window would be placed off-screen.
192
193        <STRONG>newwin</STRONG>
194             will fail if either of  its  beginning  ordinates  is
195             negative, or if either the number of lines or columns
196             is negative.
197
198        <STRONG>syncok</STRONG>
199             returns an error if the window pointer is null.
200
201        <STRONG>subwin</STRONG>
202             returns an error if  the  parent  window  pointer  is
203             null,  or  if  any  of its ordinates or dimensions is
204             negative, or if the resulting window does not fit in-
205             side the parent window.
206
207        The  functions which return a window pointer may also fail
208        if there is insufficient memory for its  data  structures.
209        Any  of  these  functions  will fail if the screen has not
210        been initialized, i.e., with <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG>.
211
212
213 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
214        If many small changes are made to the window, the  <STRONG>wsyncup</STRONG>
215        option could degrade performance.
216
217        Note that <STRONG>syncok</STRONG> may be a macro.
218
219
220 </PRE><H2><a name="h2-BUGS">BUGS</a></H2><PRE>
221        The  subwindow  functions (<EM>subwin</EM>, <EM>derwin</EM>, <EM>mvderwin</EM>, <STRONG>wsyn-</STRONG>
222        <STRONG>cup</STRONG>, <STRONG>wsyncdown</STRONG>, <STRONG>wcursyncup</STRONG>, <STRONG>syncok</STRONG>) are flaky, incomplete-
223        ly implemented, and not well tested.
224
225        The  System  V  curses documentation is very unclear about
226        what <STRONG>wsyncup</STRONG> and <STRONG>wsyncdown</STRONG> actually do.  It seems to imply
227        that  they  are only supposed to touch exactly those lines
228        that are affected by ancestor changes.  The language here,
229        and  the  behavior  of  the <STRONG>curses</STRONG> implementation, is pat-
230        terned on the XPG4 curses standard.  The weaker XPG4  spec
231        may result in slower updates.
232
233
234 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
235        The  XSI  Curses  standard,  Issue 4 describes these func-
236        tions.
237
238
239 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
240        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>,  <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>,  <STRONG>curs_vari-</STRONG>
241        <STRONG><A HREF="curs_variables.3x.html">ables(3x)</A></STRONG>
242
243
244
245                                                         <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG>
246 </PRE>
247 <div class="nav">
248 <ul>
249 <li><a href="#h2-NAME">NAME</a></li>
250 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
251 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
252 <ul>
253 <li><a href="#h3-newwin">newwin</a></li>
254 <li><a href="#h3-delwin">delwin</a></li>
255 <li><a href="#h3-mvwin">mvwin</a></li>
256 <li><a href="#h3-subwin">subwin</a></li>
257 <li><a href="#h3-derwin">derwin</a></li>
258 <li><a href="#h3-dupwin">dupwin</a></li>
259 <li><a href="#h3-wsyncup">wsyncup</a></li>
260 <li><a href="#h3-wsyncdown">wsyncdown</a></li>
261 <li><a href="#h3-wcursyncup">wcursyncup</a></li>
262 </ul>
263 </li>
264 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
265 <li><a href="#h2-NOTES">NOTES</a></li>
266 <li><a href="#h2-BUGS">BUGS</a></li>
267 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
268 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
269 </ul>
270 </div>
271 </BODY>
272 </HTML>