FLTK window 在 while 循环 c++ 中未显示

FLTK window not showing in while loop c++

我正在尝试在 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();
}

我遇到的问题是 window 没有显示。我想在 while (!_doExit) 循环中继续显示和重绘 window,使用 _doExit 很重要。我试过使用

while (Fl::wait > 0)

但是这个方法似乎有它自己的等待事件的循环。 如何像我一样实现循环并显示 window?

FLTK 在调用 Fl::run 之前什么都不做。因此,您在调用 Fl::run 后无法执行任何操作,因为仅当 main window 关闭时函数 returns 才关闭。

正是为了在 Fltk 本身 "running" 时做一些事情,你可以像这样注册到空闲循环:

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 中进行绘图或任何您想在 FLTK 中实现的操作,这些操作不受来自活动小部件本身的事件驱动。