- 1、本文档共48页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- 七彩循环装饰灯的设计.doc
- 七沙水闸监理规划.doc
- 万宁市群团组织阵地建设实施资料.doc
- 万科外墙淋水资料.doc
- 万科股权激励资料报告.doc
- 万科规划资料设计任务方案模板.doc
- 三、天津市武清区必威体育精装版版规划区域城乡规划.ppt
- 三一重工电子商务资料.doc
- 三个同频带信号的频分复用GUI设计.doc
- 三位二进制加法计数器、序列信号发生器的设计、用集成芯片设计一个256进制加法计数器.doc
- 专题07生活用电-备战2022-2023学年九年级物理上学期期末考试真题汇编(人教版)(原卷版+解析).docx
- 牛顿运动定律章末测试(原卷版+解析).docx
- 专题03电流和电路-备战2022-2023学年九年级物理上学期期末考试真题汇编(人教版)(原卷版+解析).docx
- 专题05内能及其利用(原卷版+解析)-备战2023年中考物理精选考点专练(知识清单+基础+拔高).docx
- 沪科版八年级下学期期末考试(C卷)(原卷版+解析).docx
- 曲线运动章末测试(原卷版+解析).docx
- 相互作用章末测试(原卷版+解析).docx
- 专题14电热电热综合计算类-2023年中考物理计算题专题提升培优练(原卷版+解析).docx
- 2、内能与比热容(原卷版+解析).docx
- 01复杂情况的固体压强综合计算-2022中考物理力学压轴计算题难题专练(原卷版+解析).docx
最近下载
- 办公用品订购合同范本.docx VIP
- WORD版本刻度尺-A4纸打印可用.doc
- 90nm逻辑产品Peeling缺陷的解决方案.pdf
- 神经系统的分级调节.pptx VIP
- 中建施工总平面布置图设计(69页).pdf
- 2024年公共卫生与预防医学继续教育平台“大学习”活动线上培训栏目考试题库(1392题).docx
- 北师大版(2023)必修第一册 Unit 2 Sports and Fitness单元教学设计.pdf VIP
- 2016-2023年长沙民政职业技术学院高职单招(英语/数学/语文)笔试历年参考题库含答案解析.docx
- 农业经济学-农业资金.ppt VIP
- 齐鲁医学神经系统疾病的辅助检查.ppt VIP
文档评论(0)