首页 > 解决方案 > FLTK窗口未在while循环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();
}

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

while (Fl::wait > 0)

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

标签: c++11fltk

解决方案


Fl::runFLTK 在被调用之前什么都不做。因此,调用后您无法执行任何操作,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 中进行绘图或您想要实现的任何事情,这不是由来自活动小部件本身的事件驱动的。


推荐阅读