首页 > 用户发贴区 > 编程问题提问区 > tc下图象编程的问题 解决好的qqb 赠送啊
2007
09-20

tc下图象编程的问题 解决好的qqb 赠送啊

#include <process.h>
#include <dos.h>
#include <conio.h>
#define Key_DOWN 336
#define Key_UP 328
#define Key_ESC 27
#define Key_ALT_F 276
#define Key_ALT_X 301
#define Key_ENTER 13
void box(int startx,int starty,int high,int width);
int  GetKey(void);
void Quit(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 A1t_x”};
/* 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=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+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=2;i<7;i++) /* 显示子菜单各项 */
{ 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+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,high);
putch(0xc0); /* 画└ */
for (i=startx+1;i<width;i++) putch(0xc4); /* 画─ */
putch(0xd9); /* 画┘ */
return ;
}


 


 


这个程序 如何才能实现 光标的下移  和左右移动  希望高人能给个说明和解决方法


如果能帮我把课程实际报告搞出来就更好了  小弟qqb赠送


tc下图象编程的问题 解决好的qqb 赠送啊》有 1 条评论

  1. chvjc 说:

    小弟qq  4702740

留下一个回复