c++11 - 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)
但是这种方法似乎有自己的循环等待事件。如何像我一样实现循环并显示窗口?
解决方案
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 中进行绘图或您想要实现的任何事情,这不是由来自活动小部件本身的事件驱动的。
推荐阅读
- ssh - mdt shell 未连接或推送 ssh 密钥
- angular - Angular 中的链式 Observable RxJ
- python - 从python中删除sql表行
- javascript - 如何在 $match 聚合 mongodb 上分配动态键?
- c# - Twilio API - 发送短信时请求过多
- amazon-web-services - Express/AwsServerlessExpress/lambda/Secrets Manager - 从函数中导出变量 -
- ios - 是否可以在 SwiftUI 2.0 中使用 OpenURLAction 拨打电话?
- javascript - React Hooks - 从 DOM 中临时删除组件而不卸载它的最佳方法
- python - 在匹配python正则表达式后查找下一个/上一个字符串
- mdx - 更改 MDX 查询的维度属性的标题