FLTK 在按钮释放时从输入中获取值

FLTK Getting value from input on button release

我已经完成了一些教程,当我按下按钮时可以打印一些东西,但是我不知道如何存储插入到输入小部件中的值,将用户购买到一个变量中供我使用.我是 C++ 和 FLTK 的新手,所以我不确定是否有像 Java 扫描仪这样的简单东西可以使用。我假设您会使用 var=input-value(); 之类的东西,但我不知道如何在回调中使用它,因为它们只采用某些参数。如:

  Fl_Button *butts[2];

  static void Button_cb(Fl_Widget * w, void* data){

  Fl_Button *b = (Fl_Button*)w;
  fprintf(stderr, "Button '%s' was %s\n", b->label(), b->value() ? "Pushed" : "Released");

}

我不能只更换打印线让它工作。 None 我找到并完成的教程解释了这一点。

你的想法太低级了。稍微高一点的使用就可以了:回调是点击操作的结束:不是按下也不是松开。

#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Input.H>
#include <FL/Fl_Int_Input.H>
#include <FL/Fl_Button.H>
#include <FL/Fl_Color_Chooser.H>

struct Info
{
    // The widgets
    Fl_Input* instr;
    Fl_Int_Input* inint;

    // Saved values
    char sval[40];
    int  ival;
};

// Callback for the done button
void done_cb(Fl_Widget* w, void* param)
{
    Info* input = reinterpret_cast<Info*>(param);

    // Get the values from the widgets
    strcpy (input->sval, input->instr->value());
    input->ival = atoi(input->inint->value());

    // Print the values
    printf("String value is %s\n", input->sval);
    printf("Integer value is %d\n", input->ival);
}

int main(int argc, char **argv)
{
    Info input;

    // Setup the colours
    Fl::args(argc, argv);
    Fl::get_system_colors();

    // Create the window
    Fl_Window *window = new Fl_Window(200, 150);
    int x = 50, y = 10, w = 100, h = 30;
    input.instr = new Fl_Input(x, y, w, h, "Str");
    input.instr->tooltip("String input");

    y += 35;
    input.inint = new Fl_Int_Input(x, y, w, h, "Int"); 
    input.inint->tooltip("Integer input");

    y += 35;
    Fl_Button* done = new Fl_Button(x, y, 100, h, "Done");
    done->callback(done_cb, &input); 
    window->end();

    window->show(argc, argv);
    return Fl::run();
}