我怎样才能去我以前的 Fl::窗口
How can I go to my previous Fl::window?
好的,所以我正在使用FLTK制作游戏。我有一个函数可以打印一个启动画面,它是我用"播放"和"规则"按钮制作的 Fl::window 的子类。当用户单击"规则"时,它会打印另一个带有"后退"按钮和规则的 Fl::window 子类(显然)。我的问题首先是弄清楚当用户按后退时如何显示原始初始屏幕。我知道我可以创建第二个相同的初始屏幕,当按下按钮时弹出,但这意味着用户只能从"规则"和"返回"一次。我希望它是一个循环,以便用户可以按"规则"-->"返回"-->"规则"-->"返回"多次。这有意义吗?有什么想法吗?
通常每个 gui 都可以表示为嵌套状态机。如果你进入另一个屏幕(状态),你会破坏你实际显示的小部件或窗口,并创建一个新的。如果有一个按钮可以将您"带回"第一个状态,您可以执行相同的操作:销毁实际的小部件或屏幕,然后再次创建第一个。非常简单或不简单:-)
如果您进入SM的更深层次结构,则会在已经存在的更高状态上创建一个新小部件。离开此子状态将删除此级别中的所有小部件。更改子状态的级别只会破坏子状态的小部件并在同一级别中创建新小部件。
在 c++ 中,用类表示状态机非常容易。输入状态会创建一个类的实例,离开它会破坏表示它的实例。
使用 c++11,您可以在联合上使用 "new at" 运算符,该运算符"包含"应用程序级别中的所有状态。联合保证,您已经保留了足够的内存,并且您根本不需要使用new/delete,这在没有MMU的小型系统上可能是一个问题。我希望如果您使用的是fltk,那么您有一个小系统:-)
使用 C++03 你不能在联合中使用非平凡的类,所以 c++11 在这里是一个真正的简化!
玩得愉快!
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- 问:如何使用C++中的按钮从窗口打开窗口
- SDL 窗口不会弹出
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- 如何在cpp文件之间切换窗口?在Qt中
- QuadTree只在窗口的右上角绘制
- VS Code "command":"make"与终端窗口中的命令行"make"不同
- 如何在C++中找到active directory中禁用和锁定的窗口帐户
- 处理闪烁窗口事件
- 如何通过按下第三个窗口中的按钮,将QString从一个窗口获取到另一个窗口
- C++win32 API创建多个类似视口的窗口
- SFML RenderWindow打开窗口需要很长时间
- 如何将不同的可执行文件合并到一个窗口框架中进行编码?像浏览器一样
- 获取 SFML 窗口的 HWND 和高可用性?
- 如何获取 GLFW 窗口 ID?
- GLEW/GLUT:调用init并创建一个窗口后,取消初始化并重新初始化?
- 用于窗口的 HID 终端
- SFML 文本未绘制在窗口上
- 如何为窗口截屏
- 我怎样才能去我以前的 Fl::窗口