📄 界面.txt
字号:
#include <process.h>
#include <dos.h>
#include <conio.h>
#define Key_DOWN 0x5000
#define Key_UP 0x4800
#define Key_LEFT 0x4B00
#define Key_RIGHT 0x4D00
#define Key_ESC 0x011b
#define Key_ALT_D 0x2000
#define Key_ALT_C 0x2e00
#define Key_ALT_P 0x1900
#define Key_ALT_W 0x1100
#define Key_ALT_X 0x2d00
#define Key_ENTER 0x1c0d
void box(int startx,int starty,int high,int width);
void rightdir();
void rightcal();
void rightwindow();
void rightplan();
void leftdir2();
void leftcal2();
void leftwindow2();
void leftplan2();
char *menu[] = {"Directory","Calendar","Plan","Window"};
char *red[] ={ "D","C","P","W",}; /*加上红色热键*/
char *f[] = {"Load directory", "Save directory", "Add address", "Edit address", "Delete address","Find address"};
char *a[]={"Current date","Input date","Year calendar"};
char *b[]={"Appointment F2","Birthday F3","Task"};
char *c[]={"Next window F8","Quit system ALT+X"};
char *p1[]={"L","S","A","D","E","F"};
char *p2[]={"C","I","Y"};
char *p3[]={"A","B","T"};
char *p4[]={"N","Q"};
char buf[16*10*2],buf1[16*2],buf2[80*25*2];
main()
{
int i,key,x,y,l,m;
static int p;
/*定义保存文本的缓冲区*/
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;i<4;i++)
{
x=wherex(); /* 得到当前光标的坐标 */
y=wherey();
cprintf("%s",menu[i]); /* 显示各菜单项 */
l=strlen(menu[i]); /* 得到菜单项的长度 */
gotoxy(x,y);
textcolor(RED);
cprintf("%s",red[i]); /* 在主菜单项各头字符写上红字符 */
x=x+l+10;
gotoxy(x,y);
textcolor(BLACK); /* 为显示下一个菜单项移动光标 */
}
/*显示Directory的下拉菜单*/
key=bioskey(0);gettext(1,1,80,25,buf2);
loop:
{
if(key== Key_ALT_D)
{
p=1;
textbackground(BLACK);
textcolor(WHITE);
gotoxy(5,1);
cprintf("%s",menu[0]); /*加黑Directory项*/
gettext(5,2,20,12,buf); /* 保存窗口原来的文本 */
window(5,2,20,11); /* 设置作矩形框的窗口 */
textbackground(LIGHTGRAY);
textcolor(BLACK);
clrscr();
box(1,1,9,16); /*调用作框函数*/
for(i=2;i<8;i++) /* 显示子菜单各项 */
{
gotoxy(2,i);
cprintf("%s",f[i-2]);
gotoxy(2,i);
textcolor(RED);
cprintf("%s",p1[i-2]);
textcolor(BLACK);
}
gettext(5,2,20,3,buf1); /*将下拉菜单的内容保存在buf1*/
textbackground(BLACK);
textcolor(WHITE);
gotoxy(2,2);
cprintf("%s",f[0]); /*加黑下拉菜单的第一项load directory*/
gotoxy(2,2);
y=2;
while ((key=bioskey(0))!=Key_ALT_X) /* 等待选择下拉菜单项*/
{
if ((key==Key_UP)||(key==Key_DOWN))
{
puttext(5,y,20,y+1,buf1); /* 恢复原先的项 */
if (key==Key_UP)
y=y==2?7:y-1;
else
y=y==7?2:y+1;
gettext(5,y,20,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 directory*/
break;
case 2: /*save directory*/
break;
case 3: /*Add address*/
break;
case 4: /*Edit address*/
break;
case 5: /*Delete address*/
break;
case 6: /*Find address*/
exit(0);
default:
break;
}
break;
}
else if (key==Key_ESC)
break; /* 是Esc 键,返回主菜单 */
else if(key==Key_LEFT||key==Key_RIGHT) goto loop;
}
if (key==Key_ALT_X) exit(0);
}
if(key== Key_ALT_C)
{ p=2;
/*显示Calendar的下拉菜单*/
l=strlen(menu[1]);
m=l+16;
/* ALT_X 则退出 */
textbackground(BLACK);
textcolor(WHITE);
gotoxy(m,1);
cprintf("%s",menu[1]);
gettext(m,2,m+15,12,buf); /* 保存窗口原来的文本 */
window(m,2,m+15,6); /* 设置作矩形框的窗口 */
textbackground(LIGHTGRAY);
textcolor(BLACK);
clrscr();
box(1,1,5,15);
for(i=2;i<5;i++) /* 显示子菜单各项 */
{
gotoxy(2,i);
cprintf("%s",a[i-2]);
gotoxy(2,i);
textcolor(RED);
cprintf("%s",p2[i-2]);
textcolor(BLACK);
}
gettext(m,2,m+15,3,buf1); /*将下拉菜单的内容保存在buf1*/
textbackground(BLACK);
textcolor(WHITE);
gotoxy(2,2);
cprintf("%s",a[0]); /*加黑下拉菜单的第一项Current date*/
gotoxy(2,2);
y=2;
while ((key=bioskey(0))!=Key_ALT_X) /* 等待选择下拉菜单项*/
{
if ((key==Key_UP)||(key==Key_DOWN))
{
puttext(m,y,m+15,y+1,buf1); /* 恢复原先的项 */
if (key==Key_UP)
y=y==2?4:y-1;
else
y=y==4?2:y+1;
gettext(m,y,m+15,y+1,buf1); /*保存要压上光条的子菜单项*/
textbackground(BLACK);
textcolor(WHITE);
gotoxy(2,y);
cprintf("%s",a[y-2]); /* 产生黑条压在所选项上 */
gotoxy(2,y);
}
else if (key==Key_ENTER) /*若是回车键,判断是哪一子类菜单按的回车*/
{
switch ( y-1 )
{
case 1: /*是子菜单第一项Current date*/
system("display"); puttext(1,1,80,25,buf2); break;
case 2: /*Input dat*/
system("wan"); puttext(1,1,80,25,buf2); break;
case 3: /*Year calendar*/
system("show2008"); puttext(1,1,80,25,buf2); exit(0);
default:
break;
}
break;
}
else if (key==Key_ESC)
break; /* 是Esc 键,返回主菜单 */
else if(key==Key_LEFT||key==Key_RIGHT) goto loop;
}
if (key==Key_ALT_X) exit(0);
}
/*显示Plan的下拉菜单*/
if(key== Key_ALT_P)
{p=3;
l=l+strlen(menu[2]);
m=l+32;
/* ALT_X 则退出 */
textbackground(BLACK);
textcolor(WHITE);
gotoxy(m,1);
cprintf("%s",menu[2]);
gettext(m,2,m+16,12,buf); /* 保存窗口原来的文本 */
window(m,2,m+16,6); /* 设置作矩形框的窗口 */
textbackground(LIGHTGRAY);
textcolor(BLACK);
clrscr();
box(1,1,5,16); /*调用作框函数*/
for(i=2;i<5;i++) /* 显示子菜单各项 */
{
gotoxy(2,i);
cprintf("%s",b[i-2]);
gotoxy(2,i);
textcolor(RED);
cprintf("%s",p3[i-2]);
textcolor(BLACK);
}
gettext(m,2,m+16,3,buf1); /*将下拉菜单的内容保存在buf1*/
textbackground(BLACK);
textcolor(WHITE);
gotoxy(2,2);
cprintf("%s",b[0]); /*加黑下拉菜单的第一项Appointment F2*/
gotoxy(2,2);
y=2;
while ((key=bioskey(0))!=Key_ALT_X) /* 等待选择下拉菜单项*/
{
if ((key==Key_UP)||(key==Key_DOWN))
{
puttext(m,y,m+16,y+1,buf1); /* 恢复原先的项 */
if (key==Key_UP)
y=y==2?4:y-1;
else
y=y==4?2:y+1;
gettext(m,y,m+16,y+1,buf1); /*保存要压上光条的子菜单项*/
textbackground(BLACK);
textcolor(WHITE);
gotoxy(2,y);
cprintf("%s",b[y-2]); /* 产生黑条压在所选项上 */
gotoxy(2,y);
}
else if (key==Key_ENTER) /*若是回车键,判断是哪一子类菜单按的回车*/
{
switch ( y-1 )
{
case 1: /*是子菜单第一项Appointment F2*/
break;
case 2: /*Birthday F3*/
break;
case 3: /*Task*/
exit(0);
default:
break;
}
break;
}
else if (key==Key_ESC)
break; /* 是Esc 键,返回主菜单 */
else if(key==Key_LEFT||key==Key_RIGHT) goto loop;
}
if (key==Key_ALT_X) exit(0);
}
/*显示Window 的下拉菜单*/
if(key== Key_ALT_W)
{p=4;
l=l+strlen(menu[2]);
m=l+46;
textbackground(BLACK);
textcolor(WHITE);
gotoxy(m,1);
cprintf("%s",menu[3]); /*加黑Next window F8*/
gettext(m,2,m+19,12,buf); /* 保存窗口原来的文本 */
window(m,2,m+19,5); /* 设置作矩形框的窗口 */
textbackground(LIGHTGRAY);
textcolor(BLACK);
clrscr();
box(1,1,4,19); /*调用作框函数*/
for(i=2;i<4;i++) /* 显示子菜单各项 */
{
gotoxy(2,i);
cprintf("%s",c[i-2]);
gotoxy(2,i);
textcolor(RED);
cprintf("%s",p4[i-2]);
textcolor(BLACK);
}
gettext(m,2,m+19,5,buf1); /*将下拉菜单的内容保存在buf1*/
textbackground(BLACK);
textcolor(WHITE);
gotoxy(2,2);
cprintf("%s",c[0]); /*加黑下拉菜单的第一项*/
gotoxy(2,2);
y=2;
while ((key=bioskey(0))!=Key_ALT_X) /* 等待选择下拉菜单项*/
{
if ((key==Key_UP)||(key==Key_DOWN))
{
puttext(m,y,m+19,y+1,buf1); /* 恢复原先的项 */
if (key==Key_UP)
y=y==2?3:y-1;
else
y=y==3?2:y+1;
gettext(m,y,m+19,y+1,buf1); /*保存要压上光条的子菜单项*/
textbackground(BLACK);
textcolor(WHITE);
gotoxy(2,y);
cprintf("%s",c[y-2]); /* 产生黑条压在所选项上 */
gotoxy(2,y);
}
else if (key==Key_ENTER) /*若是回车键,判断是哪一子类菜单按的回车*/
{
switch ( y-1 )
{
case 1: /*是子菜单第一项Next window F8*/
break;
case 2: /*Quit system ALT+X*/
exit(0);
default:
break;
}
break;
}
else if (key==Key_ESC)
break; /* 是Esc 键,返回主菜单 */
else if(key==Key_LEFT||key==Key_RIGHT) goto loop;
}
if (key==Key_ALT_X) exit(0);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -