From ecd2c821be8a72b0364cf3e08d102e3f9a82defc Mon Sep 17 00:00:00 2001 From: Michael R Sweet Date: Mon, 26 Nov 2001 21:40:14 +0000 Subject: Doco updates. Remove unneeded files from the makefiles directory. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@1735 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- documentation/basics.html | 391 ++++++++++++++++++++++++++++------------------ 1 file changed, 242 insertions(+), 149 deletions(-) (limited to 'documentation/basics.html') diff --git a/documentation/basics.html b/documentation/basics.html index 58ae3fd02..cf2f1eaf9 100644 --- a/documentation/basics.html +++ b/documentation/basics.html @@ -1,70 +1,18 @@ - + + +

2 - FLTK Basics

- This chapter will teach you the basics of compiling programs that use -FLTK. -

Naming

- All public symbols in FLTK start with the characters 'F' and 'L': - -

Header Files

- The proper way to include FLTK header files is: - -Microsoft Windows developers please note: case *is* significant -under other operating systems, and the C standard uses the forward -slash (/) to separate directories. Do not do any of the following: - -

Compiling Programs with Standard Compilers

- Under UNIX (and under Microsoft Windows when using the GNU development -tools) you will probably need to tell the compiler where to find the -header files. This is usually done using the -I option: - - Similarly, when linking your application you will need to tell the -compiler to use the FLTK library: - -

Compiling Programs with Microsoft Visual C++

- In Visual C++ you will need to tell the compiler where to find the -FLTK header files. This can be done by selecting "Settings" from the -"Project" menu and then changing the "Preprocessor" settings under the -"C/C++" tab. You will also need to add the FLTK and WinSock (WSOCK32.LIB) -libraries to the "Link" settings. -

You can build your Microsoft Windows applications as Console or -WIN32 applications. If you want to use the standard C main() - function as the entry point, FLTK includes a WinMain() - function that will call your main() function for you.

-

Note: The Visual C++ 5.0 optimizer is known to cause problems with -many programs. We only recommend using the "Favor Small Code" -optimization setting. The Visual C++ 6.0 optimizer seems to be much -better and can be used with the "optimized for speed" setting.

+ +

This chapter teaches you the basics of compiling programs +that use FLTK.

+

Writing Your First FLTK Program

- All programs must include the file <FL/Fl.H>. In addition the -program must include a header file for each FLTK class it uses. - Listing 1 shows a simple "Hello, World!" program that uses FLTK to -display the window. + +

All programs must include the file <FL/Fl.H>. +In addition the program must include a header file for each +FLTK class it uses. Listing 1 shows a simple "Hello, +World!" program that uses FLTK to display the window.

+ - After including the required header files, the program then creates a -window: - + +

After including the required header files, the program then creates a +window:

+ + - and a box with the "Hello, World!" string in it: - + +

and a box with the "Hello, World!" string in it:

+ + - Next, we set the type of box and the size, font, and style of the label: - + +

Next, we set the type of box and the size, font, and style of the label:

+ + - Finally, we show the window and enter the FLTK event loop: - + +

Finally, we show the window and enter the FLTK event loop:

+ + -The resulting program will display the window below. You can quit the -program by closing the window or pressing the ESCape key. -

Hello, World! Window

+ + +

The resulting program will display the window in Figure 2-1. +You can quit the program by closing the window or pressing the +ESCape key.

+ +

Hello, World! Window
+Figure 2-1: The Hello, World! Window

+

Creating the Widgets

- The widgets are created using the C++ new operator. For - most widgets the arguments to the constructor are: - + +

The x and y parameters determine where the +widget or window is placed on the screen. In FLTK the top left +corner of the window or screen is the origin (i.e. x = 0, y = +0) and the units are in pixels.

+ +

The width and height parameters determine +the size of the widget or window in pixels. The maximum widget +size is typically governed by the underlying window system or +hardware.

+ +

label is a pointer to a character string to label +the widget with or NULL. If not specified the label +defaults to NULL. The label string must be in static +storage such as a string constant because FLTK does not make a +copy of it - it just uses the pointer.

+

Get/Set Methods

-box->box(FL_UP_BOX) sets the type of box the -Fl_Box draws, changing it from the default of FL_NO_BOX, which means -that no box is drawn. In our "Hello, World!" example we use -FL_UP_BOX, which means that a raised button border will be drawn -around the widget. You can learn more about boxtypes in -Chapter 3. -

You could examine the boxtype in by doing -box->box(). Fltk uses method name overloading to make -short names for get/set methods. A "set" method is always of the form -"void name(type)", and a "get" method is always of the form -"type name() const". + +

box->box(FL_UP_BOX) sets the type of box the +Fl_Box draws, changing it from the default of +FL_NO_BOX, which means that no box is drawn. In our +"Hello, World!" example we use FL_UP_BOX, +which means that a raised button border will be drawn around +the widget. You can learn more about boxtypes in +Chapter 3.

+ +

You could examine the boxtype in by doing +box->box(). FLTK uses method name overloading to make +short names for get/set methods. A "set" method is always of +the form "void name(type)", and a "get" method is always +of the form "type name() const".

Redrawing After Changing Attributes

-

Almost all of the set/get pairs are very fast, short inline -functions and thus very efficient. However, the "set" methods do -not call redraw() - you have to call it yourself. This greatly -reduces code size and execution time. The only common exception is -value() which calls redraw() if necessary. + +

Almost all of the set/get pairs are very fast, short inline +functions and thus very efficient. However, the "set" +methods do not call redraw() - you have to call it +yourself. This greatly reduces code size and execution time. +The only common exception is value() which calls +redraw() if necessary.

Labels

-All widgets support labels. In the case of window widgets, the label -is used for the label in the title bar. Our example program calls the -labelfont, -labelsize, and -labeltype methods. -

The labelfont method sets the typeface and style that is -used for the label, which for this example we are using FL_BOLD - and FL_ITALIC. You can also specify typefaces directly.

-

The labelsize method sets the height of the font in pixels.

-

The labeltype method sets the type of label. FLTK supports -normal, embossed, shadowed, symbol, and image labels internally, and -more types can be added as desired.

-

A complete list of all label options can be found in -Chapter 3.

+ +

All widgets support labels. In the case of window widgets, +the label is used for the label in the title bar. Our example +program calls the +labelfont, + labelsize, +and labeltype +methods.

+ +

The labelfont method sets the typeface and style +that is used for the label, which for this example we are using +FL_BOLD and FL_ITALIC. You can also specify +typefaces directly.

The labelsize method sets +the height of the font in pixels.

The labeltype +method sets the type of label. FLTK supports normal, embossed, +and shadowed labels internally, and more types can be added as +desired.

+ +

A complete list of all label options can be found in +Chapter 3.

Showing the Window

- The show() method shows the widget or window. For windows + +

The show() method shows the widget or window. For windows you can also provide the command-line arguments to allow users to -customize the appearance, size, and position of your windows. +customize the appearance, size, and position of your windows.

+

The Main Event Loop

- FLTK provides the Fl:run() - method to enter a standard event processing loop. This is equivalent -to the following code: - + +

Fl::run() does not return until all of the windows +under FLTK control are closed by the user or your program.

+ +

Compiling Programs with Standard Compilers

+ +

Under UNIX (and under Microsoft Windows when using the GNU development +tools) you will probably need to tell the compiler where to find the +header files. This is usually done using the -I option:

+ + + +

The fltk-config script included with FLTK can be +used to get the options that are required by your compiler:

+ + + +

Similarly, when linking your application you will need to tell the +compiler to use the FLTK library:

+ + + +

The fltk-config script included with FLTK can be +used to get the options that are required by your linker:

+ + + +

Compiling Programs with Microsoft Visual C++

+ +

In Visual C++ you will need to tell the compiler where to +find the FLTK header files. This can be done by selecting +"Settings" from the "Project" menu and then +changing the "Preprocessor" settings under the +"C/C++" tab. You will also need to add the FLTK and +WinSock (WSOCK32.LIB) libraries to the "Link" +settings.

+ +

You can build your Microsoft Windows applications as Console or +WIN32 applications. If you want to use the standard C main() +function as the entry point, FLTK includes a WinMain() +function that will call your main() function for you.

+ +

Note: The Visual C++ 5.0 optimizer is known to cause problems with +many programs. We only recommend using the "Favor Small Code" +optimization setting. The Visual C++ 6.0 optimizer seems to be much +better and can be used with the "optimized for speed" setting.

+ +

Naming

+ +

All public symbols in FLTK start with the characters 'F' and 'L':

+ + -Fl::run() does not return until all of the windows under FLTK -control are closed by the user or your program. + +

Header Files

+ +

The proper way to include FLTK header files is:

+ + + +

Microsoft Windows developers please note: case *is* +significant under other operating systems, and the C standard +uses the forward slash (/) to separate directories. Do not +use any of the following include lines:

+ + + -- cgit v1.2.3