完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
3 ViewML窗口界面的改进
Viewml的应用层很小,只提供了基本的图形用户界面布局。作为与用户交互的窗口,要求有美观性,实用性和可操作性。为了使用户界面更为完善,本系统主要的工作增加对HTML文件的打开﹑保存和关闭;Web页的刷新﹑前进﹑返回等。 编写界面部分主要应用FLTK窗口部件,FLTK提供了比较丰富的控件,如:按钮﹑滚动条﹑文本框﹑对话框﹑列表框等等。所有这些窗口部件的框架类都在FLNK(FLTK移植到Microwindows的Nano-X API上的版本)的文件夹FL中包含的100个头文件中定义。ViewML中窗口的实现是通过创建类VMLAppWindow来构建基本的图形用户界面 ,其中只包括三个函数:VMLAppWindow(int x, int y, int w, int h) : PARENT_WINDOW(x,y,w,h,ViewML Browser) { },virtual void resize_notify(int x, int y, int w, int h), virtual int handle(int event);}在图形界面上添加按钮save,open,reload,forword,backward等,需在类VMLAppWindow中定义的相应函数。 extern Fl_Button *Save extern Fl_Button *Open extern Fl_Button *Forward; extern Fl_Button *Backward; extern Fl_Button *Reload; |
|
相关推荐
3个回答
|
|
详情参阅头文件Fl_Window.H,f Fl_Widget.H。编写好图形界面后,通过响应鼠标事件将图形和相应的事件关联起来。
在ViewML应用层中原有两个函数static int send(Fl_Widget* o, int event) :向HTTP发送请求并将请求事例放入队列;int VMLAppWindow::handle(int event):调用线程对事例队列进行处理。除了实例化上面定义的函数,在这里还加入处理网页的保存,后退,前进的函数都要用到的函数int VMLAppWindow::temp(int event),其功能是临时保存网页。其处理流程为: (1)在处理事例队列为非空时,从队列中取出一处理过的HTTP请求 (2)将HTTP请求结果用HTML三步:Tokenizer , HTNL-Parser , HTML-Layout进行处理 (3)把HTTP处理的结果加入临时保存队列中 (4)从处理事例队列中删除此请求结果 队列采用链表实现,当需要从当前页面后退时,其处理流程为: (1)捕获鼠标事件 (2)从队首搜索至工作指针的下一个元素为当前指针时,当前指针后退 (3)将当前指针所指向的元素调用HTML引擎处理 |
|
|
|
前进和刷新功能实现流程与后退类似,这里就不赘叙了。保存当前HTM法略微复杂些,因为在保存页面时还要同时保存页面中的图像文件,算法如下:
(1)输入存盘路径和文件名 (2)对文件名进行自动处理如加上后缀htm,创建一个目录,以files为后缀存放图形文件 (3)从临时保存队列中取当前指针,指针为非头指针时取其所指向HTML文件,处理文件。 (4)将文件存入磁盘 基于嵌入式系统的硬件条件有限,无存储量大的磁盘等设备.,且FLASH或ROM等存储介质的价格相对于台式机上使用的硬盘﹑光盘等是比较昂贵的 。所以嵌入式系统只能以小巧且高效来赢得市场。完善了窗口功能的系统完全能满足大部分用户的应用需求了。 |
|
|
|
4 结束语
当前通讯正在快速地成为嵌入式系统的一般需求。 本文主要阐述了一种新的嵌入式系统,支持图形界面,支持浏览器。该系统已在自主开发的硬件平台上成功运行了。在以后的工作中将致力于在该系统中增加更全面的功能,如对Java虚拟机的支持,增加邮件收发等。 |
|
|
|
只有小组成员才能发言,加入小组>>
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 23:47 , Processed in 0.718479 second(s), Total 80, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号