e6961f7d669332668641e06089ca8c9a18f12fe4
[ncurses.git] / doc / html / man / curs_window.3x.html
1 <!-- 
2   ****************************************************************************
3   * Copyright (c) 1998-2010,2014 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.18 2014/03/01 23:36:38 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>curs_window 3x</H1>
42 <HR>
43 <PRE>
44 <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG>                                         <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG>
45
46
47
48
49 </PRE>
50 <H2><a name="h2-NAME">NAME</a></H2><PRE>
51        <STRONG>newwin</STRONG>, <STRONG>delwin</STRONG>, <STRONG>mvwin</STRONG>, <STRONG>subwin</STRONG>, <STRONG>derwin</STRONG>, <STRONG>mvderwin</STRONG>, <STRONG>dupwin</STRONG>,
52        <STRONG>wsyncup</STRONG>, <STRONG>syncok</STRONG>, <STRONG>wcursyncup</STRONG>, <STRONG>wsyncdown</STRONG> - create <STRONG>curses</STRONG>
53        windows
54
55
56 </PRE>
57 <H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
58        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
59
60        <STRONG>WINDOW</STRONG> <STRONG>*newwin(</STRONG>
61              <STRONG>int</STRONG> <STRONG>nlines,</STRONG> <STRONG>int</STRONG> <STRONG>ncols,</STRONG>
62              <STRONG>int</STRONG> <STRONG>begin_y,</STRONG> <STRONG>int</STRONG> <STRONG>begin_x);</STRONG>
63        <STRONG>int</STRONG> <STRONG>delwin(WINDOW</STRONG> <STRONG>*win);</STRONG>
64        <STRONG>int</STRONG> <STRONG>mvwin(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x);</STRONG>
65        <STRONG>WINDOW</STRONG> <STRONG>*subwin(WINDOW</STRONG> <STRONG>*orig,</STRONG>
66              <STRONG>int</STRONG> <STRONG>nlines,</STRONG> <STRONG>int</STRONG> <STRONG>ncols,</STRONG>
67              <STRONG>int</STRONG> <STRONG>begin_y,</STRONG> <STRONG>int</STRONG> <STRONG>begin_x);</STRONG>
68        <STRONG>WINDOW</STRONG> <STRONG>*derwin(WINDOW</STRONG> <STRONG>*orig,</STRONG>
69              <STRONG>int</STRONG> <STRONG>nlines,</STRONG> <STRONG>int</STRONG> <STRONG>ncols,</STRONG>
70              <STRONG>int</STRONG> <STRONG>begin_y,</STRONG> <STRONG>int</STRONG> <STRONG>begin_x);</STRONG>
71        <STRONG>int</STRONG> <STRONG>mvderwin(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>par_y,</STRONG> <STRONG>int</STRONG> <STRONG>par_x);</STRONG>
72        <STRONG>WINDOW</STRONG> <STRONG>*dupwin(WINDOW</STRONG> <STRONG>*win);</STRONG>
73        <STRONG>void</STRONG> <STRONG>wsyncup(WINDOW</STRONG> <STRONG>*win);</STRONG>
74        <STRONG>int</STRONG> <STRONG>syncok(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>bool</STRONG> <STRONG>bf);</STRONG>
75        <STRONG>void</STRONG> <STRONG>wcursyncup(WINDOW</STRONG> <STRONG>*win);</STRONG>
76        <STRONG>void</STRONG> <STRONG>wsyncdown(WINDOW</STRONG> <STRONG>*win);</STRONG>
77
78
79 </PRE>
80 <H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
81        Calling <STRONG>newwin</STRONG> creates and returns a pointer to a new win-
82        dow with the given number of lines and columns.  The upper
83        left-hand corner of the window is at
84               line <EM>begin</EM>_<EM>y</EM>,
85               column <EM>begin</EM>_<EM>x</EM>
86
87        If either <EM>nlines</EM> or <EM>ncols</EM> is zero, they default to
88               <STRONG>LINES</STRONG> <STRONG>-</STRONG> <EM>begin</EM>_<EM>y</EM> and
89               <STRONG>COLS</STRONG> <STRONG>-</STRONG> <EM>begin</EM>_<EM>x</EM>.
90
91        A   new   full-screen   window   is   created  by  calling
92        <STRONG>newwin(0,0,0,0)</STRONG>.
93
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        Calling <STRONG>mvwin</STRONG> moves the window so that the upper left-hand
100        corner is at position (<EM>x</EM>, <EM>y</EM>).  If the move would cause the
101        window to be off the screen, it is an error and the window
102        is not moved.  Moving subwindows is allowed, but should be
103        avoided.
104
105        Calling <STRONG>subwin</STRONG> creates and returns a pointer to a new win-
106        dow with the given number of lines, <EM>nlines</EM>,  and  columns,
107        <EM>ncols</EM>.   The  window  is at position (<EM>begin</EM>_<EM>y</EM>, <EM>begin</EM>_<EM>x</EM>) on
108        the screen.  The subwindow shares memory with  the  window
109        <EM>orig</EM>,  so that changes made to one window will affect both
110        windows.  When using this routine, it is necessary to call
111        <STRONG>touchwin</STRONG>  or  <STRONG>touchline</STRONG> on <EM>orig</EM> before calling <STRONG>wrefresh</STRONG> on
112        the subwindow.
113
114        Calling <STRONG>derwin</STRONG> is the same as calling <STRONG>subwin,</STRONG> except  that
115        <EM>begin</EM>_<EM>y</EM> and <EM>begin</EM>_<EM>x</EM> are relative to the origin of the win-
116        dow <EM>orig</EM> rather than the screen.  There is  no  difference
117        between the subwindows and the derived windows.
118
119        Calling <STRONG>mvderwin</STRONG> moves a derived window (or subwindow) in-
120        side its parent window.  The screen-relative parameters of
121        the  window are not changed.  This routine is used to dis-
122        play different parts of the  parent  window  at  the  same
123        physical position on the screen.
124
125        Calling  <STRONG>dupwin</STRONG>  creates  an exact duplicate of the window
126        <EM>win</EM>.
127
128        Calling <STRONG>wsyncup</STRONG> touches all locations in ancestors of  <EM>win</EM>
129        that  are changed in <EM>win</EM>.  If <STRONG>syncok</STRONG> is called with second
130        argument <STRONG>TRUE</STRONG> then <STRONG>wsyncup</STRONG> is called automatically whenev-
131        er there is a change in the window.
132
133        The  <STRONG>wsyncdown</STRONG>  routine  touches each location in <EM>win</EM> that
134        has been touched in any of  its  ancestor  windows.   This
135        routine  is  called by <STRONG>wrefresh</STRONG>, so it should almost never
136        be necessary to call it manually.
137
138        The routine <STRONG>wcursyncup</STRONG> updates the current cursor position
139        of  all the ancestors of the window to reflect the current
140        cursor position of the window.
141
142
143 </PRE>
144 <H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
145        Routines that return an integer return the integer <STRONG>ERR</STRONG> up-
146        on  failure  and <STRONG>OK</STRONG> (SVr4 only specifies "an integer value
147        other than <STRONG>ERR</STRONG>") upon successful completion.
148
149        Routines that return pointers return <STRONG>NULL</STRONG> on error.
150
151        X/Open defines no error conditions.  In  this  implementa-
152        tion
153
154        <STRONG>delwin</STRONG>
155             returns an error if the window pointer is null, or if
156             the window is the parent of another window.
157
158        <STRONG>derwin</STRONG>
159             returns an error if  the  parent  window  pointer  is
160             null,  or  if  any  of its ordinates or dimensions is
161             negative, or if the resulting window does not fit in-
162             side the parent window.
163
164        <STRONG>dupwin</STRONG>
165             returns an error if the window pointer is null.
166
167             This implementation also maintains a list of windows,
168             and checks that the pointer passed to <STRONG>delwin</STRONG>  is  one
169             that it created, returning an error if it was not..
170
171        <STRONG>mvderwin</STRONG>
172             returns an error if the window pointer is null, or if
173             some part of the window would be placed off-screen.
174
175        <STRONG>mvwin</STRONG>
176             returns an error if the window pointer is null, or if
177             the  window  is  really a pad, or if some part of the
178             window would be placed off-screen.
179
180        <STRONG>newwin</STRONG>
181             will fail if either of  its  beginning  ordinates  is
182             negative, or if either the number of lines or columns
183             is negative.
184
185        <STRONG>syncok</STRONG>
186             returns an error if the window pointer is null.
187
188        <STRONG>subwin</STRONG>
189             returns an error if  the  parent  window  pointer  is
190             null,  or  if  any  of its ordinates or dimensions is
191             negative, or if the resulting window does not fit in-
192             side the parent window.
193
194        The  functions which return a window pointer may also fail
195        if there is insufficient memory for its  data  structures.
196        Any  of  these  functions  will fail if the screen has not
197        been initialized, i.e., with <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG>.
198
199
200 </PRE>
201 <H2><a name="h2-NOTES">NOTES</a></H2><PRE>
202        If many small changes are made to the window, the  <STRONG>wsyncup</STRONG>
203        option could degrade performance.
204
205        Note that <STRONG>syncok</STRONG> may be a macro.
206
207
208 </PRE>
209 <H2><a name="h2-BUGS">BUGS</a></H2><PRE>
210        The  subwindow  functions (<EM>subwin</EM>, <EM>derwin</EM>, <EM>mvderwin</EM>, <STRONG>wsyn-</STRONG>
211        <STRONG>cup</STRONG>, <STRONG>wsyncdown</STRONG>, <STRONG>wcursyncup</STRONG>, <STRONG>syncok</STRONG>) are flaky, incomplete-
212        ly implemented, and not well tested.
213
214        The  System  V  curses documentation is very unclear about
215        what <STRONG>wsyncup</STRONG> and <STRONG>wsyncdown</STRONG> actually do.  It seems to imply
216        that  they  are only supposed to touch exactly those lines
217        that are affected by ancestor changes.  The language here,
218        and  the  behavior  of  the <STRONG>curses</STRONG> implementation, is pat-
219        terned on the XPG4 curses standard.  The weaker XPG4  spec
220        may result in slower updates.
221
222
223 </PRE>
224 <H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
225        The  XSI  Curses  standard,  Issue 4 describes these func-
226        tions.
227
228
229 </PRE>
230 <H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
231        <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>
232        <STRONG><A HREF="curs_variables.3x.html">ables(3x)</A></STRONG>
233
234
235
236                                                         <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG>
237 </PRE>
238 <div class="nav">
239 <ul>
240 <li><a href="#h2-NAME">NAME</a></li>
241 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
242 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
243 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
244 <li><a href="#h2-NOTES">NOTES</a></li>
245 <li><a href="#h2-BUGS">BUGS</a></li>
246 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
247 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
248 </ul>
249 </div>
250 </BODY>
251 </HTML>