> I think what you are missing is that you have not attached a callback
> to your button, so the button does not know what to do when you click
> on it.
>
> Here's a simple example that shows what you might do:
> -------------------
> /* Thread Test Code */
>
> #include <stdlib.h>
> #include <stdio.h>
> #include <unistd.h>
>
> #include <FL/Fl.H>
> #include <FL/Fl_Double_Window.H>
> #include <FL/Fl_Button.H>
>
> #include "threads.h"
>
> #ifdef WIN32
> # define wait_here(x) Sleep(x) // delay in milliseconds
> # define SCHED_YIELD Sleep(0)
> #else
> # include <sched.h> // maybe necessary for sched_yield ?
> # define wait_here(x) usleep((x)*1000) // delay in milliseconds
> # define SCHED_YIELD sched_yield()
> #endif
>
> #define MAX_THRDS 20
>
> static int keep_running = -1;
> static int active_thrds = 0;
>
> static Fl_Double_Window *main_win=(Fl_Double_Window *)0;
> static Fl_Button *exit_bt=(Fl_Button *)0;
> static Fl_Button *add_bt=(Fl_Button *)0;
>
> void* thread_task(void* p) {
> long id = (long)p;
> printf("Start thread %ld\n", id); fflush(stdout);
>
> while(keep_running) {
> wait_here(1000); // delay for a second
> printf("Hello from thread %ld\n", id); fflush(stdout);
> }
> return 0;
> }
>
> static void cb_exit_bt(Fl_Button*, void*) {
> keep_running = 0;
> main_win->hide();
> }
>
> static void cb_add_bt(Fl_Button*, void*) {
> // add new thread button
> if (active_thrds < MAX_THRDS) {
> Fl_Thread thread_id;
> active_thrds++;
> fl_create_thread(thread_id, thread_task, (void *)active_thrds);
> }
> }
>
> int main(int argc, char **argv) {
> Fl::scheme("gtk+");
> main_win = new Fl_Double_Window(316, 231, "Threads Tester");
> exit_bt = new Fl_Button(230, 190, 64, 20, "Quit");
> exit_bt->callback((Fl_Callback*)cb_exit_bt);
>
> add_bt = new Fl_Button(15, 65, 64, 20, "Add");
> add_bt->callback((Fl_Callback*)cb_add_bt); // add a callback to the
> add-thread button
>
> main_win->end();
> main_win->show(argc, argv);
>
> keep_running = -1; // set this zero to kill all the child threads
>
> return Fl::run();
> }
Thanks a lot. This was enough info for me to get it working. I appreciate the
advice.
Tom
_______________________________________________
fltk mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk