FLTK窗口未在While循环中显示C ++

时间:2019-07-10 09:14:26

标签: c++11 fltk

我正在尝试在FLTK中实现游戏循环

void SnakeFLTK::init() {
    _display = new Fl_Window(900, 600);
    if (!_display)
        throw SnakeFLTKException("Couldn't make fltk window!");
    _display->color(FL_BLACK);
    _display->show();
    while (!_doExit) {
        std::cout << "-->" << std::endl;
    }
    Fl::run();
}

我的问题是窗口未显示。我想继续在while (!_doExit)循环中在窗口上显示和重绘,使用_doExit很重要。我尝试使用

while (Fl::wait > 0)

,但是此方法似乎有其自己的循环来等待事件。 如何像我一样实现循环并显示窗口?

1 个答案:

答案 0 :(得分:1)

FLTK在调用Fl::run之前不执行任何操作。因此,在调用Fl::run之后您将无法执行任何操作,因为该函数仅在关闭主窗口时返回。

正好在Fltk本身“运行”时做某事,您可以像这样注册到空闲循环:

void CallbackFunc( void* )
{
    std::cout << "Hallo" << std::endl;
}

int main() {
    auto _display = new Fl_Window(900, 600);
    _display->color(FL_BLACK);
    _display->show();
    Fl::add_idle( CallbackFunc );
    Fl::run();
}

在给定的回调函数中,您可以执行绘图或您希望在FLTK中完成的任何操作,而不受活动小部件本身事件的驱动。