📄 例2-7.c
字号:
/* Note:Your choice is C IDE */
#include <stdio.h>
#include <stdlib.h>
#include <process.h>
#include <dos.h>
#include <conio.h>
/* define Keys scan code */ /* 定义各键的扫描码 */
#define Key_DOWN 80
#define Key_UP 72
#define Key_ESC 1
#define Key_ALT_F 33
#define Key_ALT_X 45
#define Key_ENTER 28
int get_key();
void box(int startx,int starty,int high,int width);
void main()
{
int i,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 Alt_x"};
char buf[16*10*2],buf1[16*2];
textbackground(1);
clrscr();
/* textmode(C80); */
window(1,1,80,2);
for(i=0,l=0;i<8;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+4;
gotoxy(x,y);
textcolor(BLACK);
}
while(1)
{
key=0;
while(bioskey(1)==0);
key=get_key();
if(key==Key_ALT_X)
exit(0);
if(key==Key_ALT_F)
{
textbackground(0);
textcolor(15);
gotoxy(4,1);
cprintf("%s",menu[0]);
gettext(4,2,19,12,buf);
window(4,2,19,8);
textbackground(15);
textcolor(0);
clrscr();
window(4,2,19,9);
box(1,1,7,16);
for(i=2;i<7;i++)
{
gotoxy(2,i);
cprintf("%s",f[i-2]);
}
gettext(2,2,18,3,buf);
textbackground(0);
textcolor(15);
gotoxy(2,2);
cprintf("%s",f[0]);
y=2;
key=get_key();
while(key!=Key_ALT_X&Key_ENTER&&key!=Key_ESC)
{
if(key==Key_UP||key==Key_DOWN)
{
puttext(2,y,18,y+1,buf1);
if(key=Key_UP)
y=y==2?6:y-1;
if(key=Key_DOWN)
y=y==6?2:y+1;
gettext(2,y,18,y+1,buf1);
textbackground(0);
textcolor(15);
gotoxy(2,y);
cprintf("%s",f[y-2]);
}
key=get_key();
}
if(key==Key_ALT_X)
exit(0);
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);
break;
default:
break;
}
}
else
{
window(1,1,80,2);
puttext(4,2,19,12,buf);
textbackground(15);
textcolor(0);
gotoxy(4,1);
cprintf("%s",menu[0]);
}
}
}
}
int get_key()
{
union REGS rg;
rg.h.ah=0;
int86(0x16,&rg,&rg);
return rg.h.ah;
}
void box(int startx,int starty,int high,int width)
{
int i;
gotoxy(startx,starty);
putch(0xda);
for(i=startx+1;i<width;i++)
putch(0xc4);
putch(0xbf);
for(i=starty+1;i<high;i++)
{
gotoxy(startx,i);
putch(0xb3);
gotoxy(width,i);
putch(0xb3);
}
gotoxy(startx+1,width);
putch(0xc0);
for(i=startx+1;i<width;i++)
putch(0xc4);
putch(0xd9);
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -