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