C ++ FLTK FL_INPUT检测何时按下输入,然后将文本添加到FL_TEXT_DISPLAY

问题描述

我想检测何时在FL_INPUT中按下Enter键,并使用C ++将其文本添加到FL_Text_display中。

请帮助我,我不知道该怎么办

#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Text_Buffer.H>
#include <FL/Fl_Text_display.H>
#include <FL/Fl_Input.H>

using namespace std;

int main(int argc,char **argv) {

  Fl_Window win(320,240,"BIC");

  Fl_Text_Buffer txtbuf;

  win.begin();
    Fl_Text_display ted(2,2,320-2,240-2-32-2);
    Fl_Input        inp(2,240-2-32,32);
  win.end();
  
  ted.buffer(txtbuf);
  
  win.resizable(ted);
  
  win.show();
  
  return Fl::run();
}

解决方法

您将必须继承Fl_Input并重写虚拟int handle(int)方法。

class MyInput : public Fl_Input {
   public:   
    MyInput(int x,int y,int w,int h,const char* title=0) : Fl_Input(x,y,w,h,title) {}

   virtual int handle(int e) override {
        switch(e) {
            case FL_ENTER: foo(); return 1;
            default: return 0;
        }
    }
};