我正在为我的gamedev项目制作一个非常小的游戏内部GUI库,但我无法找到处理焦点的干净方式。图书馆图书馆:如何正确处理重点?
我的库支持嵌套列表框和小部件层次结构,但我似乎无法找到一种方法来防止在处理小部件焦点时出现奇怪的行为。例如形式:
|------------|
| Form [X] |
|------------|
| |
| [Button01] |
| |
| [List1][v] |
| |
| [Button02] |
| |
|------------|
我的设计采用了Context
对象存储Widget
对象的列表。 A Widget
可以有任意数量的孩子。我有设施递归迭代Widget
的所有孩子/父母。
我关注的逻辑是目前:
如果上下文忙(拖动,缩放,编辑......),不改变焦点
如果按下鼠标的上下文之外或上下文是重点不突出,无焦点的一切
找到最上面的压制孩子,如果任何
找到“最深”层次结构中的压制孩子
无焦点的一切,但小部件一样深,像最深的孩子,并注重上下文
然而,这在很多场合失败,尤其是与嵌套的列表和文本框。我试图在网上找到一个很好的解决方案,但找不到任何文章/教程。我不确定我是否应该专注于特殊的小部件,或者是否存在可以在任何情况下正常工作的“良好”算法。
GUI库通常如何处理窗口小部件焦点?
是否有特别的说明,让小工具(如ListBoxes或ComboBoxes)独家专注?
这是我的GUI库的source code和video here。
嗯..这与回答你的问题无关。这只是对您的代码/存储库的评论。不知道是否合适的C++ ..包括实现在内的每一行代码都在头文件或类声明中。一切声明为内联。你等待它编译多少个小时?接下来几乎没有任何行有任何评论或没有文档/自述任何地方..一切都被命名为SSV/SSU/SSVU ..吨的模板没有..更改源代码链接指向正确的文件(S)你想要检查。该链接指向包含许多文件的文件夹.. – Brandon
* GUI库通常如何处理小部件焦点?*您可以随时查看开源GUI库,例如[MyGUI](http://mygui.info /)。 –
“但是,这在许多场合都失败了” - 它有什么作用?你期望它做什么?虽然我们处在这个位置,但是“重点”是什么意思?这个名字有不同的概念。 –