我怎样才能去我以前的 Fl::窗口

How can I go to my previous Fl::window?

本文关键字:窗口 Fl      更新时间:2023-10-16

好的,所以我正在使用FLTK制作游戏。我有一个函数可以打印一个启动画面,它是我用"播放"和"规则"按钮制作的 Fl::window 的子类。当用户单击"规则"时,它会打印另一个带有"后退"按钮和规则的 Fl::window 子类(显然)。我的问题首先是弄清楚当用户按后退时如何显示原始初始屏幕。我知道我可以创建第二个相同的初始屏幕,当按下按钮时弹出,但这意味着用户只能从"规则"和"返回"一次。我希望它是一个循环,以便用户可以按"规则"-->"返回"-->"规则"-->"返回"多次。这有意义吗?有什么想法吗?

通常每个 gui 都可以表示为嵌套状态机。如果你进入另一个屏幕(状态),你会破坏你实际显示的小部件或窗口,并创建一个新的。如果有一个按钮可以将您"带回"第一个状态,您可以执行相同的操作:销毁实际的小部件或屏幕,然后再次创建第一个。非常简单或不简单:-)

如果您进入SM的更深层次结构,则会在已经存在的更高状态上创建一个新小部件。离开此子状态将删除此级别中的所有小部件。更改子状态的级别只会破坏子状态的小部件并在同一级别中创建新小部件。

在 c++ 中,用类表示状态机非常容易。输入状态会创建一个类的实例,离开它会破坏表示它的实例。

使用 c++11,您可以在联合上使用 "new at" 运算符,该运算符"包含"应用程序级别中的所有状态。联合保证,您已经保留了足够的内存,并且您根本不需要使用new/delete,这在没有MMU的小型系统上可能是一个问题。我希望如果您使用的是fltk,那么您有一个小系统:-)

使用 C++03 你不能在联合中使用非平凡的类,所以 c++11 在这里是一个真正的简化!

玩得愉快!