#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(int startx,int starty,int high,int width)
main()
{
int i,key,x,y,l
char *menu[] =
/* 主菜单各项 */
char *red[] = /* 加上红色热键 */
char *f[] =
/* 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=0i<8i++)
{
x=wherex() /* 得茄蔽到当前光标的坐标 */
y=wherey()
cprintf("%s",menu[i])/* 显示各菜单项 */
l=strlen(menu[i]) /* 得到菜单项的长度 */
gotoxy(x,y)
textcolor(RED)
cprintf("%s",red[i]) /* 在主菜单项各头字符写上红字符 */
x=x+l+5
gotoxy(x,y)
textcolor(BLACK) /* 为显示下一个菜单项移动光标 */
}
gotoxy(5,1)
key=bioskey(0)
switch (key){
case Key_ALT_X:
exit(0)/* ALT_X 则退出 */
case Key_ALT_F:
{
textbackground(BLACK)
textcolor(WHITE)
gotoxy(5,1)
cprintf("%s",menu[0]) /* 加黑 File 项 */
gettext(5,2,20,12,buf)/* 保存窗口原来的文本 */
window(5,2,20,9)/* 设置作矩形框的颤旅州窗口 */
textbackground(LIGHTGRAY)
textcolor(BLACK)
clrscr()
box(1,1,7,16) /* 调用作框函数 */
for(i=2i<7i++)/* 显示子菜单各项 */
{ gotoxy(2,i)
cprintf("%s",f[i-2])
}
gettext(2,2,18,3,buf1) /*将下拉菜单的内容保存在 buf1*/
textbackground(BLACK)
textcolor(WHITE)
gotoxy(2,2)
cprintf("%s",f[0])/*加黑下拉菜单的第一项 load file*/
gotoxy(2,2)
y=2
while ((key=bioskey(0))!=Key_ALT_X) /* 等待选择下拉菜单项*/
{
if ((key==Key_UP)||(key==Key_DOWN))
{
puttext(2,y,18,y+1,buf1) /* 恢复原先的项 */
if (key==Key_UP)
y=y==2?6:y-1
else
y=y==6?2:y+1
gettext(2,y,18,y+1,buf1)/*保存要压上光条的子菜单项*/
textbackground(BLACK)
textcolor(WHITE)
gotoxy(2,y)
cprintf("%s",f[y-2])/* 产生黑条压在所选项上 */
gotoxy(2,y)
}
else
if (key==Key_ENTER)/* 若是回车键,判断是哪一子菜单按的回
车,在此没有相应的特殊处理*/
{
switch ( y-1 ){
case 1: /* 是子菜单项第一项:Load file */
break
case 2: /* Save file */
break
case 3:/* print */
break
case 4: /* modify */
break
case 5:
exit(0)
default:
break
}
break
}
else
if (key==Key_ESC)
break/* 是 Esc 键,返回主菜单 */
}
if (key==Key_ALT_X) exit(0)
break
}
}
}
}
void box(int startx,int starty,int high,int width) /* 画矩形框函数 */
{ int i
gotoxy(startx,starty)
putch(0xda) /* 画┌ */
for (i=startx+1i<widthi++) putch(0xc4) /* 画— */
putch(0xbf) /* 画┐ */
for( i=starty+1i<highi++)
{
gotoxy(startx,i)putch(0xb3) /* 画│ */
gotoxy(width,i)putch(0xb3) /* 画│ */
}
gotoxy(startx,high)
putch(0xc0) /* 画└ */
for (i=startx+1i<widthi++) putch(0xc4) /* 画— */
putch(0xd9) /* 画┘ */
return
}
1、新建一个C项目,点击文件,新知滚差建,项目,选择C++Win32控制台应用。
2、在项目向导中设置,会默认生产一个项目框架。
3、可以使用color函数变化字体和窗口的颜色。
4、要在C语言中实现颜色的变化,需要引入windows.h头文件,即#include <windows.h>方可调用color函数,system("备歼color 02")类似的,但不能先写一个循环,循环color 后面的颜色。但可以直接把color 02当作字符串来对待,对后两个字符串进行循环变化。
5、这里的测试代码如下所示:char a[9]="color 02" int i for(i=0i<=5i++) { a[6]=(char)((int('0'))+i+2) //颜色交替出现/背景颜色搭皮 a[7]=(char)((int('0'))+i) //字体颜色 system(a) system("cls") printf("\n\n\n\n\n\n\n\n\t\t\4 \4 \4Welcome\4 \4 \4") printf("\n\n\n\n\n") Sleep(1000) //延时1秒 system("cls") } system("cls")。
6、而上面使用到的system("cls")是清屏函数,直接可以到cmd中输入cls即可实现清屏的功能。下面就是测试的效果了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)