中南大学 操作系统实验报告课程设计报告.doc

中南大学 操作系统实验报告课程设计报告.doc

  1. 1、本文档共48页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
中南大学 操作系统实验报告课程设计报告

操作系统实验报告 界面设计 菜单 菜单包括菜单栏,菜单,菜单项,一个菜单栏可以包括N个菜单,一个菜单可以包括菜单项。C语言设计菜单的思想是用双向链表,先保存绘图区的内容,再在上面画菜单。 菜单结构图 数据结构 菜单栏: typedef struct menubar_s{ int number,x,y,barheight,baritemwidth;/*number用来记录菜单项的数目,x,y用来记录菜单栏在屏幕上的位置,barheight用来控制菜单栏的高度,baritemwidth用来控制每项菜单的宽度*/ struct menu_s *mhead; /*指向第一个菜单*/ struct menu_s *mtail; /*指向最后一个菜单*/ struct menu_s *mpoint; /*当用户按下左右箭头时用来记录指向那个菜单,初始指向mhead*/ void (* docommand)(); /*菜单时间的处理函数*/ }MenuBar; 菜单: typedef struct menu_s{ int number; /*菜单是菜单栏中的第几项*/ int subwidth; /*菜单项的宽度*/ int subcount; /*菜单项的数目*/ char *content; /*菜单显示的字符串/ struct menu_s *next; /*指向下一个菜单,如果是结尾菜单,则为NULL*/ struct menu_s *before; /*指向前一个菜单,如果是头菜单,则为NULL*/ struct submenu_s *sub; /*指向当前激活的菜单项*/ struct submenu_s *head; /*指向第一个菜单项*/ struct submenu_s *tail; /*指向最后一个菜单项*/ }Menu; 菜单项: typedef struct submenu_s{ int number; /*菜单项是菜单中的第几项*/ int isactive; /*是否激活*/ char *content; /*显示的字符串*/ struct submenu_s *next; /*指向下一个菜单项*/ struct submenu_s *before; /*指向前一个菜单项*/ }submenu; 函数实现 菜单构造函数 /*该函数的功能主要是根据指定的menutitle字符串,往菜单栏中添加一项菜单*/ void addmenu(char *menutitle){ if(Mb==NULL){/*如果Mb(全局MenuBar类型的变量)为NULL,说明没有初始化菜单栏,要初始化*/ if((Mb=(MenuBar *)malloc(sizeof(MenuBar)))==NULL) doerror(System error); Mb-number=0; /*菜单栏中菜单数目为0*/ Mb-mpoint=Mb-mhead=Mb-mtail=NULL; Mb-x=0; Mb-y=0; /*位置于屏幕上(0,0)*/ Mb-barheight=18; /*菜单栏高度为18*/ Mb-baritemwidth=100; /*每项菜单的宽度为100*/ Mb-docommand=docommand; /*设置事件处理函数为docommand()*/ } if(Mb-mtail==NULL){ /*如果Mb-mtail为NULL,说明要先构造Mb-mhead*/ if((Mb-mhead=(Menu *)malloc(sizeof(Menu)))==NULL) doerror(System error); Mb-mhead-before=NULL; Mb-mtail=Mb-mhead; }else { if((Mb-mtail-next=(Menu *)malloc(sizeof(Menu)))==NULL) doerror(System error); Mb-mtail-next-before=Mb-mtail; Mb-mtail=Mb-mtail-next; } Mb-mtail-number=Mb-number; /*当前添加进去的菜单位置,下面有Mb-number的自加*/ Mb-mtail-subwidth=0; /*菜单项的宽度为0*/ Mb-mtail-subcount=0; /*菜单项数目为0/ Mb-mtail-content=menutitle; /*把菜单的字符串指针指向menutitle*/ Mb-mtail-next=NULL; Mb-mtail-sub=Mb-mtai

文档评论(0)

weizhent2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档