Contents
Previous
Next
Class >Hierarchy>
>Fl_Group>
> |
> +---->Fl_Window>
> |
> +---->Fl_Double_Window>, >Fl_Gl_Window>,
> >Fl_Overlay_Window>, >Fl_Single_Window>
>
Include >Files>
>#include <FL/Fl_Window.H>
>
Description>
This >widget >produces >an >actual >window. > This >can >
either >be >a >main > window, >with >a >border >and >
title >and >all >the >window >management >controls, > or >
a >"subwindow" >inside >a >window. > This >is >controlled >
by >whether >or >not > the >window >has >a >parent()>
. >
Once >you >create >a >window, >you >usually >add >
children >Fl_Widget> 's >to >it >by >using >
window->add(child)> for >each >new >widget. > See >
Fl_Group> for >more >information > on >how >to >
add >and >remove >children. >
There >are >several >subclasses >of >Fl_Window>
that >provide > double-buffering, >overlay, >menu, >and >
OpenGL >support. >
The >window's >callback >is >done >if >the >user >
tries >to >close >a >window > using >the >window >
manager >and > Fl::modal()>
is >zero >or >equal >to >the >window. >Fl_Window>
has >a >default >callback >that >calls >
Fl_Window::hide()> and >calls > exit(0)> if >
this >is >the >last >top-level >window. >
Methods>
The >first >form >of >the >constructor >should >be >
used >for >a >"top-level" >window >(that >is, >one >
that >is >not >inside >another >window). > It >correctly >
sets >visible()> to >false >and >parent()>
to >NULL>. >By >not >specifying >the >position >
of >the >window, >the >window >system >will >pick >a >
place >to >show >the >window >or >allow >the >user >
to >pick >a >location. > If >you >want >to >force >a >
position >you >should >call >position(x,y)> or >
hotspot()> before >calling >show()>. >
Fl_Widget::box()> is >set >to >FL_FLAT_BOX>
. > If >you > plan >to >completely >fill >the >window >
with >children >widgets >you >should > change >this >to >
FL_NO_BOX>. >If >you >turn >the >window >border >
off > you >may >want >to >change >this >to >
FL_UP_BOX>. >
Fl_Window::Fl_Window(int >x, >int >y, >int >w, >int >
h, >const >char >*title >= >0)>
The >second >form >of >the >constructor >is >for >
creating >child >windows. > It >leaves >visible()>
set >to >true. >
The >destructor >also >deletes >all >the >children>
. >This >allows >a > whole >tree >to >be >deleted >at >
once, >without >having >to >keep >a >pointer >to > all >
the >children >in >the >user >code. >A >kludge >has >
been >done >so >the > Fl_Window> and >all >of >
it's >children >can >be >automatic >(local) > variables, >
but >you >must >declare >the >Fl_Window> first>
so > that >it >is >destroyed >last. >
Set >the >allowable >range >the >user >can >resize >
this >window >to. > This >only > works >for >top-level >
windows. >
- minw> and >minh> are >the >smallest >
the >window > can > be. >
- maxw> and >maxh> are >the >largest >
the >window > can >be. > If >either >is >equal>
to >the >minimum >then >you > cannot >resize >in >
that >direction. > If >either >is >zero > then >FLTK >
picks >a >maximum >size >in > that >direction >such >
that >the > window >will >fill >the >screen. >
- dw> and >dh> are >size >increments. >
The > window >will > be >constrained >to >widths >of >
minw >+ >N >* >dw>, > where >N> is >any >
non-negative >integer. > If >these >are > less >or >equal >
to >1 >they > are >ignored. > (this >is >ignored >on >
WIN32)>
- aspect> is >a >flag >that >indicates >that >
the >window >should > preserve >it's >aspect >ratio. >
This >only >works >if >both >the >maximum >and >
minimum >have >the >same >aspect >ratio. > (ignored >on >
WIN32 >and >by >many >X > window >managers)>
If >this >function >is >not >called, >FLTK >tries >to >
figure >out >the >range > from >the >setting >of >
resizeable()> : >
- If >resizeable()> is >NULL> (this >is >
the > default) > then >the >window >cannot >be >resized >
and >the >resize > border >and >max-size > control >will >
not >be >displayed >for >the > window. >
- If >either >dimension >of >resizeable()> is >
less >than > 100, > then >that >is >considered >the >
minimum >size. > Otherwise >the > resizeable()> has >
a >minimum >size >of >100. >
- If >either >dimension >of >resizeable()> is >
zero, >then > that >is > also >the >maximum >size >(so >
the >window >cannot >resize >in > that >direction). >
It >is >undefined >what >happens >if >the >current >
size >does >not >fit >in >the > constraints >passed >to >
size_range()>. >
Put >the >window >on >the >screen. > Usually >this >
has >the >side >effect >of > opening >the >display. >
The >second >form >is >used >for >top-level > windows >
and >allow >standard >arguments >to >be >parsed >from >
the > command-line. >
If >the >window >is >already >shown >then >it >is >
restored >and >raised >to >the > top. > This >is >
really >convenient >because >your >program >can >call >
show()> at >any >time, >even >if >the >window >is >
already >up. > It >also >means >that > show()>
serves >the >purpose >of >raise()> in >other >
toolkits. >
Remove >the >window >from >the >screen. > If >the >
window >is >already >hidden >or > has >not >been >shown >
then >this >does >nothing >and >is >harmless. >
Returns >non-zero >if >show()> has >been >called >
(but >not >hide()> ). >You >can >tell >if >a >
window >is >iconified >with >(w->shown() > &!w->visible())>
. >
Iconifies >the >window. > If >you >call >this >when >
shown()> is >false > it >will >show()> it >
as >an >icon. > If >the >window >is >already >
iconified >this >does >nothing. >
Call >show()> to >restore >the >window. >
When >a >window >is >iconified/restored >(either >by >
these >calls >or >by >the > user) >the >handle()>
method >is >called >with >FL_HIDE> and >
FL_SHOW> events >and >visible()> is >turned >
on >and >off. >
There >is >no >way >to >control >what >is >drawn >
in >the >icon >except >with >the > string >passed >to >
Fl_Window::xclass()>. > You >should >not >rely >on >
window >managers >displaying >the >icons. >
Change >the >size >and >position >of >the >window. >
If >shown()> is > true, >these >changes >are >
communicated >to >the >window >server >(which >may >
refuse >that >size >and >cause >a >further >resize). >
If >shown()> is > false, >the >size >and >
position >are >used >when >show()> is >called. >
See >Fl_Group> for >
the >effect > of >resizing >on >the >child >widgets. >
You >can >also >call >the >Fl_Widget> methods >
size(x,y)> and >position(w,h)>, >which >are >
inline >wrappers >for >this >virtual > function. >
Undoes >the >effect >of >a >previous >resize()>
or >show()> so >that >the >next >time >
show()> is >called >the >window >manager >is > free >
to >position >the >window. >
position()> the >window >so >that >the >mouse >
is >pointing >at >the > given >position, >or >at >the >
center >of >the >given >widget, >which >may >be >the >
window >itself. > If >the >optional >offscreen>
parameter >is > non-zero, >then >the >window >is >
allowed >to >extend >off >the >screen >(this > does >
not >work >with >some >X >window >managers). >
Makes >the >window >completely >fill >the >screen, >
without >any >window > manager >border >visible. > You >
must >use >fullscreen_off()> to >undo > this. >
This >may >not >work >with >all >window >managers. >
Turns >off >any >side >effects >of >fullscreen()>
and >does > resize(x,y,w,h)>. >
Gets >or >sets >whether >or >not >the >window >manager >
border >is >around >the > window. > The >default >value >
is >true. >border(n)> can >be >used >to > turn >
the >border >on >and >off, >and >returns >non-zero >if >
the >value >has >been > changed. >Under >most >X >
window >managers >this >does >not >work >after >
show()> has >been >called, >although >SGI's >4DWM >
does >work.>
clear_border()> is >a >fast >inline >function >to >
turn >the >border > off. >It >only >works >before >
show()> is >called. >
A >"modal" >window, >when >shown()>, >will >
prevent >any >events >from > being >delivered >to >other >
windows >in >the >same >program, >and >will >also >
remain >on >top >of >the >other >windows >(if >the >
X >window >manager >supports > the >"transient >for" >
property). > Several >modal >windows >may >be >shown >at >
once, >in >which >case >only >the >last >one >shown >
gets >events. > You >can >see > which >window >(if >
any) >is >modal >by >calling >
Fl::modal()>. >
Returns >true >if >this >window >is >modal. >
A >"non-modal" >window >(terminology >borrowed >from >
Microsoft >Windows) > acts >like >a >modal()> one >
in >that >it >remains >on >top, >but >it >has > no >
effect >on >event >delivery. > There >are >three>
states >for >a > window: >modal, >non-modal, >and >
normal. >
Returns >true >if >this >window >is >modal >or >
non-modal. >
Gets >or >sets >the >window >title >bar >label. >
Gets >or >sets >the >icon >label. >
A >string >used >to >tell >the >system >what >type >
of >window >this >is. >Mostly > this >identifies >the >
picture >to >draw >in >the >icon. >Under >X, >this >
is > turned >into >a >XA_WM_CLASS> pair >by >
truncating >at >the >first > non-alphanumeric >character >
and >capitalizing >the >first >character, >and > the >
second >one >if >the >first >is >'x'. > Thus >"foo" >
turns >into >"foo, >Foo", > and >"xprog.1" >turns >into >
"xprog, >XProg".> This >only >works >if >called >
before> calling >show()>. >
Under >Microsoft >Windows >this >string >is >used >as >
the >name >of >the >WNDCLASS >structure, >though >it >
is >not >clear >if >this >can >have >any >visible >
effect. >
make_current()> sets >things >up >so >that >the >
drawing >functions >in >
<FL/fl_draw.H>> will >go >into >this > window. >
This >is >useful >for >incremental >update >of >windows, >
such >as >in >an > idle >callback, >which >will >make >
your >program >behave >much >better >if >it > draws >a >
slow >graphic. >Danger: >incremental >update >is >very >
hard >to > debug >and >maintain!>
This >method >only >works >for >the >Fl_Window>
and > Fl_Gl_Window> classes. >
Returns >the >last >window >that >was >made >current. >
Change >the >cursor >for >this >window. > This >always >
calls >the >system, >if >you >are >changing >the >
cursor >a >lot >you >may >want >to >keep >track >of >
how >you >set >it >in >a >static >varaible >and >call >
this >only >if >the >new >cursor >is >different. >
The >type >Fl_Cursor> is >an >enumeration >
defined >in >
<Enumerations.H>>. >(Under >X >you >can >get >
any >XC_cursor >value >by >passing >
Fl_Cursor((XC_foo/2)+1)>). > The >colors >only >work >
on >X, >they >are >not >implemented >on >WIN32. >
Contents
Previous
Next