Contents
Previous
Next
Class >Hierarchy>
>Fl_Widget>
> |
> +---->Fl_Box>, >Fl_Browser_>, >Fl_Button>, >Fl_Chart>, >Fl_Clock>,
> >Fl_Free>, >Fl_Group>, >Fl_Input_>, >Fl_Menu_>, >Fl_Positioner>,
> >Fl_Timer>, >Fl_Valuator>
>
Include >Files>
>#include <FL/Fl_Widget.H>
>
Description>
Fl_Widget> is >the >base >class >for >all >
widgets >in >FLTK. >You >can't > create >one >of >these >
because >the >constructor >is >not >public. > However >
you > can >subclass>
it. >
All >"property" >accessing >methods, >such >as >
color()>, > parent()>, >or >argument()>
are >implemented >as >trivial >inline > functions >and >
thus >are >as >fast >and >small >as >accessing >fields >
in >a > structure. >Unless >otherwise >noted, >the >
property >setting >methods >such >as > color(n)>
or >label(s)> are >also >trivial >inline >
functions, > even >if >they >change >the >widget's >
appearance. > It >is >up >to >the >user >code > to >
call >redraw()> after >these. >
Methods>
Fl_Widget::Fl_Widget(int >x, >int >y, >int >w, >int >
h, >const >char* > label=0);>
This >is >the >protected >constructor >for >an >
Fl_Widget, >but >all >derived > widgets >have >a >
matching >public >constructor. > It >takes >a >value >for >
x(), > y(), >w(), >h(), >and >an >optional >value >for >
label(). >
virtual >Fl_Widget::~Fl_Widget();>
Destroying >single >widgets >is >not >very >common. > It >
is >your > responsibility >to >either >remove() >them >
from >any >enclosing >group, >or >to > destroy >that >
group >immediately> after >destroying >the >children. >
uchar >Fl_Widget::type() >const;>
This >value >is >used >for >Forms >compatability >and >
to >simulate >RTTI. >
The >position >of >the >upper-left >corner >of >the >
widget >in >its >enclosing > Fl_Window >(>not> its >
parent >if >that >is >not >an >Fl_Window), >and >its >
width >and >height. >
Change >the >size >or >position >of >the >widget. >
This >is >a >virtual >function > so >the >widget >may >
implement >its >own >handling >of >resizing. > The >
default > version >does >not> do >redraw(), >that >
is >the >parent >widget's > responsibility >(this >is >
because >the >parent >may >know >a >faster >way >to >
update >the >display, >such >as >scrolling >from >the >
old >position). >
position(x,y)> is >a >shortcut >for >
resize(x,y,w(),h())> , >and >size(w,h)> is >a >
shortcut >for >resize(x(),y(),w,h)> . >
Return >a >pointer >to >the >
Fl_Window> that >this >widget >is >in >(it >
will >skip >any >and >all >parent >widgets > between >
this >and >the >window). > Returns >NULL> if >
none. > Note: > for >an >Fl_Window>, >this >
returns >its >parent> window >(if > any), >not >
this> window. >
The >box()> identifies >a >routine >that >draws >
the >background >of > the >widget. > See >
Box >Types> for >the > available >types. > The >
default >depends >on >the >widget, >but >is >usually >
FL_NO_BOX> or >FL_UP_BOX>. >
This >color >is >passed >to >the >box >routine. >
Color >is >an >index >into >an > internal >table >of >
rgb >colors. > For >most >widgets >this >defaults >to >
FL_GRAY>. > See >the >
enumeration >list> for >predefined >colors. > Use >
Fl::set_color()> to >redefine >colors. >
For >Forms >compatibility >a >second >color >is >
defined. > This >is >usually > used >to >color >the >
widget >when >it >is >selected, >although >some >widgets >
use > this >color >for >other >purposes. > You >can >
set >both >colors >at >once >with > color(a,b)>. >
The >label >is >printed >somewhere >on >the >widget >
or >next >to >it. > The > string >is >not>
copied, >the >passed >pointer >is >stored >unchanged >in >
the >widget. >
A >labeltype> identifies >a >
routine >that > draws >the >label >of >the >widget. >
This >can >be >used >for >special >effects > such >as >
emboss, >or >to >use >the >label()> pointer >as >
another >form > of >data >such >as >a >bitmap. > The >
value >FL_NORMAL_LABEL> prints > the >label >as >
text. >
How >the >label >is >printed >next >to >or >inside >
the >widget. > The >default > value >is >FL_ALIGN_CENTER>
, >which >centers >the >label. > The >value > can >
be >any >of >these >constants >or'd >together: >
- FL_ALIGN_CENTER>
- FL_ALIGN_TOP>
- FL_ALIGN_BOTTOM>
- FL_ALIGN_LEFT>
- FL_ALIGN_RIGHT>
- FL_ALIGN_INSIDE>
- FL_ALIGN_CLIP>
- FL_ALIGN_WRAP>
This >color >is >passed >to >the >labeltype >routine, >
and >is >typically >the > color >of >the >label >text. >
This >defaults >to >FL_BLACK>. >
Fonts >are >identified >by >small >8-bit >indexes >into >
a >table. > See >the >
enumeration >list> for >predefined >typefaces. >The >
default >value >uses >a > Helvetica >typeface >(Arial >
for >Microsoft® >Windows®). > The >function >
Fl::set_font() > can >define >new >typefaces. >
Fonts >are >further >identified >by >a >point >size. >
The >default >is >14. >
Each >widget >has >a >single >callback. > You >can >
set >it >or >examine >it >with > these >methods. >
You >can >also >just >change >the >void >*>
second >argument >to >the > callback >with >the >
user_data> methods. >
For >convenience >you >can >also >define >the >callback >
as >taking >a >long > argument. > This >is >implemented >
by >casting >this >to >a >Fl_Callback> and >
casting >the >long> to >a >void >*> and >
may >not >be > portable >to >some >machines. >
void >Fl_Widget::callback(void >(*)(Fl_Widget*))>
For >convenience >you >can >also >define >the >callback >
as >taking >only >one > argument. > This >is >implemented >
by >casting >this >to >a >Fl_Callback> and >may >
not >be >portable >to >some >machines. >
You >can >cause >a >widget >to >do >its >callback >
at >any >time, >and >even >pass > arbitrary >arguments. >
Fl_Widget::changed()> is >a >flag >that >is >
turned >on >when >the >user > changes >the >value >
stored >in >the >widget. > This >is >only >used >by >
subclasses >of >Fl_Widget> that >store >values, >
but >is >in >the >base > class >so >it >is >easier >
to >scan >all >the >widgets >in >a >panel >and >
do_callback()> on >the >changed >ones >in >response >
to >an >"OK" >button. >
Most >widgets >turn >this >flag >off >when >they >do >
the >callback, >and >when > the >program >sets >the >
stored >value. >
Fl_Widget::when()> is >a >set >of >bitflags >used >
by >subclasses >of > Fl_Widget> to >decide >when >
to >do >the >callback. > If >the >value >is >zero >
then >the >callback >is >never >done. > Other >values >
are >described >in >the > individual >widgets. > This >
field >is >in >the >base >class >so >that >you >can >
scan >a >panel >and >do_callback()> on >all >
the >ones >that >don't >do > their >own >callbacks >in >
response >to >an >"OK" >button. >
The >default >callback, >which >puts >a >pointer >to >
the >widget >on >the >queue > returned >by >
Fl::readqueue()> . > You >may >want >to >call >
this >from >your >own >callback. >
An >invisible >widget >never >gets >redrawn >and >does >
not >get >events. > The >visible()> method >
returns >true >if >the >widget >is >set >to >be >
visible.The >visible_r()> method >returns >true >if >
the >widget >and >all >of >its >parents >are >visible. >
A >widget >is >only >visible >if >visible()> is >
true >on >it >and >all >of >its >parents>. >
Changing >it >will >send >FL_SHOW> or >
FL_HIDE> events >to >the >widget. >Do >not >
change >it >if >the >parent >is >not > visible, >as >
this >will >send >false >FL_SHOW> or >FL_HIDE>
events >to >the >widget>. >redraw()> is >
called >if >necessary >on > this >or >the >parent. >
Fl_Widget::active()> returns >whether >the >widget >
is >active. >Fl_Widget::active_r()> returns >whether >
the >widget >and >all >of >its >parents >are >active. >
An >inactive >widget >does >not >get >any >events, >
but >it >does >get >redrawn. > A >widget >is >only >
active >if >active()> is >true >on >it >and >
all >of >its >parents>. >
Changing >this >value >will >send >FL_ACTIVATE>
or > FL_DEACTIVATE> to >the >widget >if >
active_r()> is >true. >
Currently >you >cannot >deactivate >Fl_Window>
widgets. >
output()> means >the >same >as >!active()>
except >it >does >not >change >how >the >widget >is >
drawn. > The >widget >will >not >recieve >any >events. >
This >is >useful >for >making >scrollbars >or >buttons >
that >work >as >displays >rather >than >input >devices. >
This >is >the >same >as >(active() >&& >visible() >
&& >!output())> but >is >faster. >
Mark >the >widget >as >needing >its >draw()>
routine >called. >
Non-zero >if >draw()> needs >to >be >called. >
Actually >this >is >a > bit >field >that >the >widget >
subclass >can >use >to >figure >out >what >parts >to >
draw. >
Returns >a >pointer >to >the >parent >widget. > Usually >
this >is >a > Fl_Group>
or >Fl_Window>
. > Returns >NULL> if >none. >
Returns >true >if >b> is >a >child >of >this >
widget, >or >is >equal >to >this >widget. > Returns >
false > if >b> is >NULL>. >
Returns >true >if >this >is >a >child >of >a>
, >or >is >equal >to >a> . >Returns >false >
if >a> is >NULL>. >
Tries >to >make >this >widget >be >the >Fl::focus()>
widget, >by >first > sending >it >an >FL_FOCUS>
event, >and >if >it >returns >non-zero, > setting >
Fl::focus()> to >this >widget. > You >should >use >
this > method >to >assign >the >focus >to >an >widget. >
Returns >true >if >the >widget > accepted >the >focus. >
Contents
Previous
Next