- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统实验报告田刚0909111612.
计算机操作系统实验报告姓名:田刚学号:0909111612班级:物联网1102班指导老师:胡小龙2012.12.7实验任务DOS下的菜单、图形界面程序设计实验平台1、Windowsxp操作系统编程工具1、TC 2.0设计思想该程序在文本方式下产生一个下拉式菜单,程序运行时首先在屏幕顶行产生一个主菜单,各菜单项的第一个字母加红,表示为热键,选择主菜单第一项,即按ALT_F时,便产生一个下拉式子菜单,可用UP和DOWN键使压在第一个子菜单项上上下移动,当压在某子菜单项上,且按回车后,程序便转去执行相应子菜单项的内容。由于时间关系只作了第一个主菜单项和对应的子菜单,且子菜单项对应的操作只在程序相应处作了说明,并无具体内容。程序中用指针数组munu[]存放主菜单各项,red[]存放各项的热键字符(即主菜单项各项的第一个字母),f[]存放主菜单第一项file的子菜单各项。定义字符数组buf存放原子菜单所占区域的内容,buf1 存放一个子菜单项区域内容,由于一个字符占两个字节,故所占列数均乘了2。外层循环处理主菜单,第一步显示主菜单界面,即先使整个屏幕的背景色为粉红色,然后开辟显示主菜单项的窗口(window(1,1,80,1)),用浅底黑色字依次显示出主菜单各项,用红色字母再重现各项的第一个字母,并使光标定位在主菜单项的第一项File的F处;第二步用键盘管理函数bioskey()获取菜单选项,当按ALT_X键时,则退出本程序,若按ALT_F键时,则执行弹出子菜单的操作:首先加黑主菜单的File项显示,将子菜单的区域内容保存到buf缓冲区内(用gettext(5,2,20,12,buf)),这样当子菜单项消失时,用它来恢复原区域的内容。然后设置一个作子菜单的蓝色窗口(window(5,2,20,9)),调用作框函数box,在浅灰色底上面输出一个矩形框来,接着的for循环则在框内显示出子菜单各项内容。接着是处理File的子菜单项的内层循环:首先获取按键,当为ALT_X时退出本程序;当为ESC键时直接返回到外层循环,即返回到主界面;当为UP或DOWN键时,则产生黑色光条的上下移动,当光条在第一项上时,若再按UP键,则光条移到最后一项,若光条原来就在最后一项,再按DOWN键,则光条退回到第一子菜单项去,这由y=y==2?6:y-1和y=y==6?2:y+l来实现,当光条压在某子菜单项上,且当按键为ENTER时程序则转去执行相应的子菜单项指明的操作,它们由switch(y-1)语句来实现,当光条压在第一子菜单项上,且按回车后,则执行case l后的操作,由于是示范程序,具体操作没有指出,要变为实用菜单,则需在此处填上操作内容,转去作相应的处理,处理之后返回到外层循环。用画框子程序box()画框,实际上是由符号┌(ASCII 为0xda),─,└,│,┘,┐,拼成了一个矩形框,仍然是文本输出,这是和图形方式下画框不同之处。实验结果TC编程界面菜单界面子菜单界面附:程序源代码#include process.h #include dos.h #include conio.h #define Key_DOWN 0x5100 #define Key_UP 0x4900#define Key_ESC 0x011b #define Key_ALT_F 0x2100#define Key_ALT_X 0x2d00#define Key_ENTER 0x1c0d void box(intstartx,intstarty,inthigh,int width); main(){ inti,key,x,y,l; char *menu[] = {File,Edit,Run,Option,Help,Setup,Zoom,Menu}; /* 主菜单各项*/ char *red[] = { F,E,R,O,H,S,Z,M }; /* 加上红色热键*/ char *f[] = {Load file, Save file, Print, Modify , Quit A1t_x}; /* File项的子菜单*/ char buf[16*10*2],buf1[16*2]; /* 定义保存文本的缓冲区*/ while(1) { textbackground(BLUE); clrscr(); textmode(C80); window(1,1,80,1);/* 定义显示主菜单的窗口*/ textbackground(LIGHTGRAY); textcolor(BLACK); clrscr(); gotoxy(5,1); for(i=0,l=0;i8;i++) { x=wherex(); /* 得到当前光标的坐标*/ y=wherey(); cprintf
文档评论(0)