FLTK窗口未在while循环c ++中显示

Posted

技术标签:

【中文标题】FLTK窗口未在while循环c ++中显示【英文标题】:FLTK window not showing in while loop c++ 【发布时间】:2019-07-10 09:14:26 【问题描述】:

我正在尝试在 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】:

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

【讨论】:

以上是关于FLTK窗口未在while循环c ++中显示的主要内容,如果未能解决你的问题,请参考以下文章

c语言中的do-while循环怎么用啊?给个例子呗。

使用没有嵌套 while 循环的滑动窗口删除注释

小白求助各位大神们 C#while循环的用法

C编程-while循环中的逗号运算符[重复]

如何在这个 pyqt5 窗口中使用 while 循环

C#使用while循环将项添加到List [关闭]