关于菜单
我们很熟悉windows的开始菜单:但是它的原理是什么啊?
WQX中怎么用LAVA设计? tc808的Lava系统界面就带这样的菜单。:loveliness: 文件夹--快捷方式而已 LZ是要这种样式的菜单
还是要这种菜单的功能? 什么叫"原理"?
无非就是把要可供选的项目画在屏幕上,然后等用户选一个,就运行选中的项目而已,还有什么? windows开始菜单的大小可以随项目随意改动(当内容太多时会有三角箭头,可以往上移动项目),
而且当某一列菜单中无所需要项时可退回上一级菜单选择另一个菜单
菜单是一层一层的,而不是一大块面板中有好多个选项
最后就是返回上一层菜单时的背景问题
怎样才能做出这些特点? 可以用函数递归的方法实现当前菜单的控制,对于弹出菜单的数据在内存中的存放,使用链表就行了. 容器, 控件(窗体), 级联, 栈, 父窗体。 LZ不如去 星软上传 版块,看看我的Sweet软件的开发包,里面有个Menu类,是Lava的,也许对你有用.
回复 9# 的帖子
是.h文件,没有注释,读不懂..:L大家能否再详细点?不要一句话了事嘛. 是在LAVAX中实现吗?
1:你得有菜单中文件的存放地址和名称,用来运行和显示(有点废话)
2:把你当时的屏幕截取下来(即是背景)
3:判断当前位置,绘制下一级菜单
4:按ESC后,退出当前程序,返回上一级递归,并且绘制背景(不然屏幕就乱了)
5:其实我只是说说...没试过...说错了见谅
6:总之,用递归要简单的多,但是WQX上你得考虑下WQX的运算速度 LZ看看Sweet包里的App.h和App.c.看看是怎样让Menu工作的,你就清楚了. 嗯......我不太提倡用递归 原帖由 TYCY 于 2008-7-9 10:08 发表 http://www.emsky.net/bbs/images/common/back.gif
是在LAVAX中实现吗?
1:你得有菜单中文件的存放地址和名称,用来运行和显示(有点废话)
2:把你当时的屏幕截取下来(即是背景)
3:判断当前位置,绘制下一级菜单
4:按ESC后,退出当前程序,返回上一级递归,并且绘制背景(不然屏幕就乱了)
5:其实 ...
WQX中当然是LAVAX了.
如果有很多层菜单,截图所需空间会很多的.:L
或许可以写入文件解决,不知速度如何
网上说用递归易出现栈溢出,不知WQX(我的是TC1000s)中能弄多少层
还有某个菜单中由于项目过多要上下滑动怎么弄?
Lumj的App.h和App.c我都看了,还是不大懂,:L
原因是我才刚学C,以前都搞BASIC的,所以面向对象的思想缺乏 为了显示菜单,还要写文件,实在是得不偿失.:L 还是放弃这个想法吧.
递归能弄多少层要看每次递归调用需要多少局部变量,但我还是觉得不用递归的好.这里不是递归技术的用武之地.
项目的滑动?无非是把当前显示出的项目擦掉,把下页内容再画上去罢了.还有什么呢?
最后,提醒你一下,程序或者说软件的界面设计是要因地制宜的,在WQX上完全照搬Windows菜单是不现实的,硬要照搬的话结果只能是:你要为此写很多很烦的代码,然后效果还不一定理想,程序运行时效率也可能很成问题.得不偿失.在WQX上程序的界面设计以简洁为主也不错啊.
不管怎么,你的探究精神很不错啊.鼓励.:)
[ 本帖最后由 Lumj 于 2008-7-9 23:28 编辑 ]
回复 15# 的帖子
Lumj说得有道理啊,似乎WQX上也不需弄太多选项,用不着模拟WINDOWS的菜单:)但是还是觉得WINDOWS的开始菜单比较直观,有没有不用递归的算法呢(在电脑上)? 菜单就是一个树形结构:
菜单中的每一个项就是树的结点,每个结点结构有一个指针指向它的下级菜单,由此可以构造出层级菜单.
也许你在数据结构上知道得还不太多,可以去找资料看看.
页:
[1]