C语言下拉菜单设计-带源代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
前景(只用于字符) 前景(只用于字符) 前景(只用于字符)
颜色控制举例
使用CLS清屏
例2 建立一个10行40列的用户窗口,且 窗口的颜色是蓝底黄字。显示的内容在 窗口中滚动。
–单步运行,再添加gotoxy(i,i)语句测试
例3 在规定的窗口(20,5,60,15)中,底 色由BLACK到LIGHTGRAY(由黑到浅灰)八 种颜色的变化,而文本颜色也是如此变 化
屏幕宽度
–80×25 (横坐标-80列 纵坐标-25行) –40×25 (横坐标-40列 纵坐标-25行)
颜色属性
包括两个方面:字符的颜色和衬托字符的颜 色。把对象的颜色称为前景的颜色,衬托对 象的颜色称为背景的颜色。前景色/背景色
文本方式下显示属性字节
位7 6 5 4 3 2 1 0 闪烁 背 景 增亮 前景
int destleft,int desttop)
–将屏幕左上角为(left,top),右下角为 ( right ,bottom )的一矩形区域内的文本内容 复制到左上角为(destleft,desttop)的新位置上。
gettext,puttext,movetext 这三个函数的 坐标是相对于整个屏幕而言的。
") ; window (1,1,80,25); }
例2
# include <conio.h> main () {
int i; window (21,7,60,16); textbackground (BLUE); textcolor(14); clrscr (); for(i=0;i<15;i++)
cprintf ("Welcome!! \n"); window (1,1,80,25); }
例3
#include<conio.h> main () { int i,j; char*c[]={"BLACK","BLUE","GREEN","CYAN","RED","MAGENTA","BROWN","
显示器上的所有信息均来自显示适配器 屏幕信息保存在显示器存储器(VRAM)中 窗口、图形等编程本质是对VRAM编程
字符模式的显示器
显示信息的形态
–硬件支持:字符发生器 (计算机组成原理) –屏幕显示:字符 –VRAM中内部表示:
值:字符的ASCII码:1字节 颜色属性:1字节
移动文本窗口
int puttext (int left, int top , int right, int bottom ,void * buf)
–将用gettext 函数存入内存buf中的文本拷贝到 屏幕指定的位置上。
int movetext( int left,int top, int right,int bottom,
BW40 C40 BW80 C80 MONO
数值 -1 0 1 2 3 7
文本模式 原文本模式 黑白,40列 彩色,40列 黑白,80列 彩色,80列 单色,80列
从图形模式返回到文本模式时才使用这个函数
创建文本窗口函数
void window(int left, int top , int right, int bottom);
–设立当前窗口的背景颜色为color所指的 颜色
void textcolor(int color)
–设立当前窗口的文本颜色为color所指的 颜色
void textattr(int attr)
–同时设立当前窗口背景和前景的颜色为 attr所指的颜色
颜色参数color的含义
符号常量
BLACK BLUE MAGENTA GREEN CYAN RED BROWN LIGHTGRAY DARKGRAY LIGHTBLUE LIGHTGREEN LIGHTCYAN LIGHTRED LIGHTMAGENTA
在屏幕上创建指定大小的文本窗口 默认定义的窗口为整个屏幕(1,1)和
(80,25)。 窗口中每个字符有一个坐标值(x,y) 左上角、右下角的坐标不能越界 输入、输出信息将限定在该窗口范围内
光标位置设置/读取函数
int wherex(void)
–返回当前文本窗口中光标的位置的X 坐标, 返回值为1到80之间的整数
–注意本例中颜色的符号常量标识符
–测试前景色、背景色的设定效果
文本窗口加框
加框的窗口使信息显示更清楚 C无现成的画文本框库函数 使用ASCII中划线字符画框
例4 单线框、双线框窗口
移动文本窗口
一个文本窗口可以被整个移到另一个位置, 消失,再出现,而不影响原来在屏幕上显示 的信息。这被称为弹出式窗口设计
window (1,1,80,25); textbackground (BLUE); textcolor ( CYAN ); gotoxy (59,12); putch (0xc9); for (i=1;i<11;i++) putch (0xcd); putch( 0xbb ); for (i=13;i<22;i++) {
int gettext(int left, int top, int righr ,int bottom ,void *buf)
–将屏幕上指定矩形区域内容的文本信息存入指针 buf 指向的内存空间,内存块的字节大小为“行 数*列数*2”,其中行数=botton -top +1, 列数= righr -left +1。存储时,在相邻的两个字节中, 前一个字节存放字符,后一个字节存放这个字节 的屏幕属性。
带主菜单的多组下拉菜单
–能按左、右键移动选择主菜单
增加主菜单、子菜单项的快捷键 记住每个组的当前选择项,出现时定位
到该项
–用一个数组或磁盘文件实现
实现3-5个功能
–注意体验窗口、菜单、按键、屏幕缓冲、 数据结构的应用,使最终的程序接近实际应 用
指导教师联系方式
教师:唐远新 办公室:新主楼E1503或G809 办公电话:86390648 手机:15045803543 邮箱:tyx1521@
cputs(char *string)
–输出一个字符串到当前窗口上
putchar(char c)
–输出一个字符到当前窗口上
char getchc(void)
–从键盘上获得一个字符并在屏幕上显示出来
char getch()
–从键盘上获得一个无回显的字符
控制台(窗口)信息清除函数
void clrscr(void)
例4
#include <dos.h> #include <conio.h> main () { int i ; textbackground (YELLOW); textcolor(BLACK); gotoxy(10,2); putch(0xda); /*左上角*/ for (i=1;i<30;i++) putch (0xc4); /*单横线*/ putc;+) {
gotoxy (10,i) ; putch (0xb3); /*单竖线*/ gotoxy (40,i) ; putch (0xb3); } gotoxy(10,9); putch (0xc0); /*左下角*/ for ( i =1 ; i<30; i++ ) putch ( 0xc4 ); /*单横线*/ putch ( 0xd9 ); /*右下角*/ window (11,3,39,8); clrscr (); cprintf ("this is a single line bold of window \n ");
C语言下拉菜单 程序设计
唐远新 哈尔滨理工大学
主要内容
显示器工作方式 文本窗口I/O函数 bioskey函数 下拉菜单程序设计 扩展设计要求
1.显示器工作方式
显示适配器(显卡)
–单色文本适配器(MDA) –彩色图形适配器(CGA) –增强图形适配器(EGA)等 –工作模式:字符模式、图形模式
LIGHTGRAY"}; window(20,5,60,15); for (i=0;i<8;i++) { textbackground(i); for(j=0;j<8;j++)
if(j!=i) {
textcolor (j); clrscr (); gotoxy (5,5); cprintf("The background color is %s and the text color is %s \n", c[i],c[j]); getch (); } } window (1,1,80,25); }
–清除当前窗口,并将光标移到左上角位置 (1,1)
void clreol(void)
–将从光标位置到行末的所有字符清除
void delline(void)
–删除光标所在的那一行,以下各行上移一 行
例子1:建立一个10行40列宽的窗口
颜色与状态控制函数
void textbackground(int color)
int wherey(void)
–返回当前文本窗口中光标位置的Y坐标, 返回值为1到25之间的整数
void gotoxy (int x,inty)
–在当前文本窗口中把光标移动到指定的位 置
控制台(窗口)文本I/O函数
cpringtf("格式说明字符串",变量名表)
–把变量名表中的信息按格式说明输出到当前窗口
例5 移动文字窗口
3.bioskey函数
控制键、功能键和组合键按键捕获 bioskey函数的头文件 <bios.h> bioskey函数的格式
int bioskey(int cmd) cmd=0:返回按键值,16bit,2字节
–低8位非0,则为ASCII码 –低8位为0,则高8位值为控制键、组合键
#include <conio.h> 文本窗口I/O函数分类
–文本模式设置与创建文本窗口函数 –文本输入/输出函数 –属性与状态控制函数
文本模式设置函数
void textmode(int mode);
将屏幕设置成文本模式的全屏幕窗口,并清 除窗口中所有的图形和正文。
符号常量 LASTMODE
–发邮件后电话或短信通知
答疑时间:每周五12:30
–建议小组讨论分享学习心得、共同提高
提交总结报告时间
–四级考试后的第一个周五
例1
#include <conio.h> main () { window (21,7,60,16); clrscr (); gotoxy (14,5); cprintf ("Welcome to use the window!
0-不闪烁 1-闪烁
0-正常 1-增亮
属性位表示的颜色
前/背景色 属性值 000 001 010 011 100 101
110
111
颜色
黑 蓝 绿 青 红 紫红
棕色

加亮颜色 (当位3为1时)
灰 浅蓝 浅绿 浅青 浅红 浅紫红


2.文本窗口I/O函数
窗口:具有色彩的有边界的矩形区域 控制台I/O 头部文件
键值,为对应键的扩充码
bioskey函数
cmd=1,返回是否按键
–0,没有键按下 –非0值,有按键,将键值存放到缓冲区供
cmd=0的调用读取
cmd=2,返回控制键状态,该状态字以 编码方式放在返回值的低8位字节中。 如果某一位为1,则表示该位代表的键 盘被按下。
例6 键盘按键代码测试
–注意测试ESC、上下箭头、大小写字符、 数字、Alt+x等键值
4.下拉菜单程序设计
例7 下拉菜单模型
–画边线框 –显示菜单项并初始定位到第一个菜单项 –循环检测上下箭头、回车按键
• 恢复正常显示当前菜单项 • 改变颜色显示新的当前位置菜单项 • 选择条顶/底的判断
注意体会
–线框、表格等是“画”出来的 –屏幕界面是“设计”、“做”出来的,犹
如衣服
5.扩充设计要求
YELLOW WHITE BLINK
译名
黑 蓝 品红 绿 青 红 综 淡灰 暗灰 淡蓝 淡绿 淡青 淡红 浅品红
黄 白 闪烁
数值
0 1 5 2 3 4 6 7 8 9 10 11 12 13
14 15 128
前景和背景色
两者均可 两者均可 两者均可 两者均可 两者均可 两者均可 两者均可 两者均可 前景(只用于字符) 前景(只用于字符) 前景(只用于字符) 前景(只用于字符) 前景(只用于字符) 前景(只用于字符)
相关文档
最新文档