This a tutorial can be used by the absolute FLTK beginner. In the course of the tutorial the most common widgets will be explained and you will gain a good. As you go through this tutorial, keep in mind that these are specific examples to help you see and learn FLTK. The most important piece of information you. I have posted the first (probably of several) tutorials about C++ and FlTk to help you do the project. These will be under Tutorials and the first.

Author: Faukinos JoJojas
Country: Niger
Language: English (Spanish)
Genre: Software
Published (Last): 24 February 2005
Pages: 390
PDF File Size: 9.35 Mb
ePub File Size: 8.70 Mb
ISBN: 576-5-55201-520-5
Downloads: 90908
Price: Free* [*Free Regsitration Required]
Uploader: Zoloshura

However, I found the tutorial examples went from very easy Hello World to a little too diffucult editor. It is my hope that when you finish this tutorial you will be able to code your own FLTK applications with pleasure.

Using the FLTK Tutorial from last year, create a new FLTK Work Space in Visual C++ 6

Most importantly you need to understand classes, inheritance, pointers and dynamic memory allocation before you can attempt to learn GUI programming. Although it’s already pretty stable this tutorial is about 1. You should automatically have the “Hello World” code. Vim text editor tutoriap time to learn. But once people spend the time to learn it, they seem to really like it.

I think it’s an acquired taste. Option 1 is easier but I personally recommend Option 2 for a couple of good reasons. Firstly, you will learn to compile things by hand from a shell console. This might encourage you to learn console commands the true power behind Linux and maybe even makefiles.

You can always tell a Linux pro because they usually prefer the command line for getting work done. Secondly, you will also get an entire directory full of example demo programs using most, if not all, FLTK widgets. I don’t want to duplicate too much stuff from the FLTK documentation, so at this point goto the above link. Read the section and come back when your finished. This section has a 13 minute Flash video you can watch using any browser with a shockwave flash plugin.

I have tried it with Mozilla, Firefox, Konqueror and Opera browsers. I don’t recommend anyone use IE Internet Explorer browser anytime. Firefox is what I recommend to everyone.

The author of the video is Greg Ercolano. I have his permission to mirror the video. I experienced a real WOW! Hope you do too. Download the “Hello World” video. Instead of streaming it from this site everytime. Unzip the file and its contents then open tutorial-fltk-hello. All 4 files must be in the same directory.


But if you are a paranoid MS Windows user and don’t like downloading anything.

Then you can stream it from Greg’s site. Make sure you have flash support in your browser and don’t forget turn on your speakers. Note for Linux users: Okay time to look at some code. Let’s look at a way to make a window and a simple button.

So it will be deleted at the end of the main function scope. Until you reach win. This means that the button is the first child of the window with index 0. Doing so will automatically delete all the children of the window. So when ‘win’ goes out of scope then ‘but’ will be deleted automatically. This is a very beautiful aspect of FLTK. This might not seem that important in this example since both win and but are allocated on the stack.

But you will see later when objects are allocated on the heap, it’s a godsend. Callbacks are a means of executing code when an event occurs. This is the basis for GUI programming. Usually an event is a mouse click, keyboard pressed etc. There is more to be said about events later in the Events section. However, for this example we wish to change some of the properties of the the button when a user clicks on it.

So ‘but’ can use its base classes callback member function. Notice the second parameter is optional. That’s why our example works. More about userdata later. In this case, a reference to the button ‘but’ is passed. BTW it’s good convention, for code readability, to end or start callback function names with ‘cb ‘. In other words, it makes it visible. We don’t need it here, since we passed null by default.

It sends the program into the main event loop. In other words, the program waits for events to happen. The function run returns 0 and ends the program when all windows are closed or hidden. Another quick and easy way to end the program is to call exit 0. More on this later. Note that in this particular case it is unneccessary as the methods called on ” b ” are all of the base widget class members. Everything else requires a manual call of redraw.

As you will see in the next two lines.

FLTK Tutorial by Xu

BTW widgets don’t automatically store a copy of their label. They only store a pointer to a char array. More on this in the next section. The parameters indicate the button keeps it’s position but flrk width is doubled from 70 to What’s important is that this member function will NOT redraw the widget. So you will not see the change unless redraw is called. Hence, the next line.


Needed after the resize.

Manually calling redraw only when needed is one of the reasons FLTK is so fast. Now save tutorixl and compile it. So from a console. Click on the button. Notice the garbage the label displays! FLTK is trying to fltl a pointer which no longer exists. The original label for the button was “caption”. Turorial newcap char array goes out of scope when the butcb callback function is finished.

However, the button continues to exist in the main scope. Flltk how do we solve this dilemma? We could make our own class of widget which includes a copy of the label as part of the widget but this is now unneccessary. Fortunately, this behavior ONLY exists for labels. Simple Window with widgets that talk to each other. This program just copies whatever is in “In” to “Out” when “Copy” is pressed. The purpose though is to show communicating widgets. Next comes the ugly looking communication.

The next line does the same thing but to the output widget. Flt, the last line gets the value from the input widget and sets it to the value of the output widget. I must warn you that this is not a good way to do widget communication. For one thing it’s ugly and hard to read. Second you must manually keep track of the widget indices ie 0,1,2,3 etc. Third, there is no range checking on the child int n. Who or what deletes the dynamically allocated window widget ‘ win ‘?

Yes, FLTK will delete the children of the tutorlal when the window gets deleted or goes out of scope as in the first example. But how does the window get deleted. I don’t call delete.

The window was allocated on the heap so it does NOT go out of scope. So do we have a memory leak? We feably rely upon exit 0 to clean up for us.