C语言下拉式菜单做出字体小,C语言下拉菜单设计-带源代码.ppt

《C语言下拉菜单设计-带源代码.ppt》由会员分享,可在线阅读,更多相关《C语言下拉菜单设计-带源代码.ppt(30页珍藏版)》请在人人文库网上搜索。

1、C语言下拉菜单程序设计,唐远新 哈尔滨理工大学,主要内容,显示器工作方式 文本窗口I/O函数 bioskey函数 下拉菜单程序设计 扩展设计要求,1.显示器工作方式,显示适配器(显卡) 单色文本适配器(MDA) 彩色图形适配器(CGA) 增强图形适配器(EGA)等 工作模式:字符模式、图形模式 显示器上的所有信息均来自显示适配器 屏幕信息保存在显示器存储器(VRAM)中 窗口、图形等编程本质是对VRAM编程,字符模式的显示器,显示信息的形态 硬件支持:字符发生器 (计算机组成原理) 屏幕显示:字符 VRAM中内部表示: 值:字符的ASCII码:1字节 颜色属性:1字节 屏幕宽度 8025 (横。

2、坐标-80列 纵坐标-25行) 4025 (横坐标-40列 纵坐标-25行),颜色属性,包括两个方面:字符的颜色和衬托字符的颜色。把对象的颜色称为前景的颜色,衬托对象的颜色称为背景的颜色。前景色/背景色 文本方式下显示属性字节,7,6,5,4,3,0,2,1,闪烁,背 景,增亮,前景,0-不闪烁 1-闪烁,0-正常 1-增亮,位,属性位表示的颜色,2.文本窗口I/O函数,窗口:具有色彩的有边界的矩形区域 控制台I/O 头部文件 #include 文本窗口I/O函数分类 文本模式设置与创建文本窗口函数 文本输入/输出函数 属性与状态控制函数,文本模式设置函数,void textmode(int 。

3、mode); 将屏幕设置成文本模式的全屏幕窗口,并清除窗口中所有的图形和正文。,从图形模式返回到文本模式时才使用这个函数,创建文本窗口函数,void window(int left, int top , int right, int bottom); 在屏幕上创建指定大小的文本窗口 默认定义的窗口为整个屏幕(1,1)和(80,25)。 窗口中每个字符有一个坐标值(x,y) 左上角、右下角的坐标不能越界 输入、输出信息将限定在该窗口范围内,光标位置设置/读取函数,int wherex(void) 返回当前文本窗口中光标的位置的X 坐标,返回值为1到80之间的整数 int wherey(void)。

4、 返回当前文本窗口中光标位置的Y坐标,返回值为1到25之间的整数 void gotoxy (int x,inty) 在当前文本窗口中把光标移动到指定的位置,控制台(窗口)文本I/O函数,cpringtf(格式说明字符串,变量名表) 把变量名表中的信息按格式说明输出到当前窗口 cputs(char *string) 输出一个字符串到当前窗口上 putchar(char c) 输出一个字符到当前窗口上 char getchc(void) 从键盘上获得一个字符并在屏幕上显示出来 char getch() 从键盘上获得一个无回显的字符,控制台(窗口)信息清除函数,void clrscr(void) 清。

5、除当前窗口,并将光标移到左上角位置(1,1) void clreol(void) 将从光标位置到行末的所有字符清除 void delline(void) 删除光标所在的那一行,以下各行上移一行 例子1:建立一个10行40列宽的窗口,颜色与状态控制函数,void textbackground(int color) 设立当前窗口的背景颜色为color所指的颜色 void textcolor(int color) 设立当前窗口的文本颜色为color所指的颜色 void textattr(int attr) 同时设立当前窗口背景和前景的颜色为attr所指的颜色,颜色参数color的含义,颜色控制举例,。

6、例2 建立一个10行40列的用户窗口,且窗口的颜色是蓝底黄字。显示的内容在窗口中滚动。 单步运行,再添加gotoxy(i,i)语句测试 例3 在规定的窗口(20,5,60,15)中,底色由BLACK到LIGHTGRAY(由黑到浅灰)八种颜色的变化,而文本颜色也是如此变化 注意本例中颜色的符号常量标识符 测试前景色、背景色的设定效果,使用CLS清屏,文本窗口加框,加框的窗口使信息显示更清楚 C无现成的画文本框库函数 使用ASCII中划线字符画框 例4 单线框、双线框窗口,移动文本窗口,一个文本窗口可以被整个移到另一个位置,消失,再出现,而不影响原来在屏幕上显示的信息。这被称为弹出式窗口设计 in。

7、t gettext(int left, int top, int righr ,int bottom ,void *buf) 将屏幕上指定矩形区域内容的文本信息存入指针 buf 指向的内存空间,内存块的字节大小为“行数*列数*2”,其中行数=botton -top +1, 列数= righr -left +1。存储时,在相邻的两个字节中,前一个字节存放字符,后一个字节存放这个字节的屏幕属性。,移动文本窗口,int puttext (int left, int top , int right, int bottom ,void * buf) 将用gettext 函数存入内存buf中的文本拷贝到屏。

8、幕指定的位置上。 int movetext( int left,int top, int right,int bottom, int destleft,int desttop) 将屏幕左上角为(left,top),右下角为 ( right ,bottom )的一矩形区域内的文本内容复制到左上角为(destleft,desttop)的新位置上。 gettext,puttext,movetext 这三个函数的坐标是相对于整个屏幕而言的。 例5 移动文字窗口,3.bioskey函数,控制键、功能键和组合键按键捕获 bioskey函数的头文件 bioskey函数的格式 int bioskey(int 。

9、cmd) cmd=0:返回按键值,16bit,2字节 低8位非0,则为ASCII码 低8位为0,则高8位值为控制键、组合键键值,为对应键的扩充码,bioskey函数,cmd=1,返回是否按键 0,没有键按下 非0值,有按键,将键值存放到缓冲区供cmd=0的调用读取 cmd=2,返回控制键状态,该状态字以编码方式放在返回值的低8位字节中。如果某一位为1,则表示该位代表的键盘被按下。 例6 键盘按键代码测试 注意测试ESC、上下箭头、大小写字符、数字、Alt+x等键值,4.下拉菜单程序设计,例7 下拉菜单模型 画边线框 显示菜单项并初始定位到第一个菜单项 循环检测上下箭头、回车按键 恢复正常显示当。

10、前菜单项 改变颜色显示新的当前位置菜单项 选择条顶/底的判断 注意体会 线框、表格等是“画”出来的 屏幕界面是“设计”、“做”出来的,犹如衣服,5.扩充设计要求,带主菜单的多组下拉菜单 能按左、右键移动选择主菜单 增加主菜单、子菜单项的快捷键 记住每个组的当前选择项,出现时定位到该项 用一个数组或磁盘文件实现 实现3-5个功能 注意体验窗口、菜单、按键、屏幕缓冲、数据结构的应用,使最终的程序接近实际应用,指导教师联系方式,教师:唐远新 办公室:新主楼E1503或G809 办公电话:86390648 手机:15045803543 邮箱: 发邮件后电话或短信通知 答疑时间:每周五12:30 建议小。

11、组讨论分享学习心得、共同提高 提交总结报告时间 四级考试后的第一个周五,例1,#include main () window (21,7,60,16); clrscr (); gotoxy (14,5); cprintf (Welcome to use the window! ) ; window (1,1,80,25); ,例2,# include main () int i; window (21,7,60,16); textbackground (BLUE); textcolor(14); clrscr (); for(i=0;i15;i+) cprintf (Welcome! n); 。

12、window (1,1,80,25); ,例3,#include main () int i,j; char*c=BLACK,BLUE,GREEN,CYAN,RED,MAGENTA,BROWN,LIGHTGRAY; window(20,5,60,15); for (i=0;i8;i+) textbackground(i); for(j=0;j8;j+) if(j!=i) textcolor (j); clrscr (); gotoxy (5,5); cprintf(The background color is %s and the text color is %s n, ci,cj); ge。

13、tch (); window (1,1,80,25); ,例4,#include #include main () int i ; textbackground (YELLOW); textcolor(BLACK); gotoxy(10,2); putch(0 xda); /*左上角*/ for (i=1;i30;i+) putch (0 xc4); /*单横线*/ putch( 0 xbf ); /*右上角*/ for(i=3;i9;i+) gotoxy (10,i) ; putch (0 xb3); /*单竖线*/ gotoxy (40,i) ; putch (0 xb3); gotoxy。

14、(10,9); putch (0 xc0); /*左下角*/ for ( i =1 ; i30; i+ ) putch ( 0 xc4 ); /*单横线*/ putch ( 0 xd9 ); /*右下角*/ window (11,3,39,8); clrscr (); cprintf (this is a single line bold of window n ); window (1,1,80,25); textbackground (BLUE); textcolor ( CYAN ); gotoxy (59,12); putch (0 xc9); for (i=1;i11;i+) put。

15、ch (0 xcd); putch( 0 xbb ); for (i=13;i22;i+) gotoxy (59,i);putch (0 xba); gotoxy (70,i);putch (0 xba); gotoxy (59,22);putch (0 xc8); for (i=1;i11;i+) putch (0 xcd); putch (0 xbc); window (60,13,69,21); clrscr (); cprintf (this is a double line bold of window n ); window (1,1,80,25); ,例5,#include co。

16、nio.h main() int i; char *c=BLACK,BLUE,GREEN,CYAN,RED,MAGENTA,BROWN,LIGHTGRAY; char *buf 14*9*2; textbackground(BLUE); textcolor(YELLOW); clrscr(); window (10,2,24,11); textbackground(RED); textcolor(YELLOW); clrscr(); for (i=1;i9;i+) gotoxy (3,i+1); cprintf(%s,ci-1); gettext(10,2,24,11,buf); movete。

17、xt(10,2,24,11,30,2); puttext(50,2,64,11,buf); getch (); ,例6,#include main() union star char s2; int number; key_num; do key_num.number=bioskey(0); printf(%d %dn,key_num.s0,key_num.s1); while(1); ,例7,#include #include main() int i, key = 0; char * f = Load F3, Pick Alt_F3, New , Save F2, Write to, Di。

18、rectory, Change dir, Os shell, Quit Alt_X, ; textbackground(BLUE); textcolor(YELLOW); gotoxy(10,2); putch(0 xda); for(i=1;i 8 ; gotoxy(1, i+1); textbackground( BLUE); cprintf(%s, fi); if(key=72) i = i=0? 8: i - 1; if(key=80) i = i=8? 0: i + 1; gotoxy(1 , i + 1 ) ; textbackground(MAGENTA) ; cprintf(%s , fi ); window(1 , 1 , 80 , 25);。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值