c++ - Fl_Window 子类不起作用

标签 c++ user-interface fltk

如上文所述,我正在尝试让一个极其简单的 FLTK 1.3.3 应用程序正常运行。 但是,即使只有一个简单的 Fl_Window 和 1 个 Fl_Button,似乎也没有任何效果。谁能帮忙?

class MainEditorWindow : public Fl_Window
{
public:
    MainEditorWindow(int _width, int _height, std::string _title);
    ~MainEditorWindow();

    virtual void draw();
    virtual int handle(int _event);
private:
    Fl_Button* m_btnExit;
};

这里是实现

MainEditorWindow::~MainEditorWindow()
{

}

int MainEditorWindow::handle(int _event)
{
    return 1;
}

void MainEditorWindow::draw()
{
    m_btnExit->redraw();
}

MainEditorWindow::MainEditorWindow(int _width, int _height, std::string _title) : Fl_Window(_width, _height, _title.c_str())
{
    this->begin();
    m_btnExit = new Fl_Button(0, 0, 40, 40, "EXIT");
    m_btnExit->color(FL_RED);
    this->color(FL_WHITE);
    this->end();
}

但是当像这样简单地运行应用程序时:

int main(int argc, char** argv)
{
    MainEditorWindow* mw = new MainEditorWindow(800, 600, "SHIP Editor");
    mw->show(argc,argv);
    return Fl::run();
}

窗口显示良好,可调整大小,可移动等,draw() - 正在调用函数等等。但是窗口本身只是空白。它什么也没有显示,尤其是Fl_Button。谁能告诉我为什么会这样?据我所知,我的代码应该没有什么特别的错误。

最佳答案

你需要调用 Fl_Window::draw()

    void MainEditorWindow::draw()
    {
      m_btnExit->redraw();
      Fl_Window::draw();
    }

也许你希望按钮也可以点击

    int MainEditorWindow::handle(int _event)
    {
      //return 1;
      return(Fl_Window::handle(_event));
    }

关于c++ - Fl_Window 子类不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37352366/

相关文章:

c++ - FLTK桌面截图问题

c++ - LNK2001 尝试使用来自 Visual Studio C++CLI 项目的 v8

c++ - gcc -v 显示需要 -ltbb 被跳过

javascript - HTML/PHP 内使用 ZinoUI 的简单用户界面

java - 单击 jbutton 后激活 jradiobutton 的 ActionListener

python - 从 python Gtk 列表中选择一个选项并将其存储在变量中

c++ - FLTK:覆盖 FL_box 构造函数。 C++

c++ - 如何在将由 Thrust 在 GPU 上使用的仿函数中使用 boost.compute 函数?

C++ 静态分析 : finding all places where some member function is called

c++ - 在 Linux 中编译 FLTK 应用程序