[休闲]制作文字菜单
<P>#include <stdlib.h><BR>#include <conio.h><BR>#include <dos.h><BR>#include <string.h></P><P>/*定义各键的bioskey(0)的按键返回值*/<BR>#define Key_DOWN 0x5000<BR>#define Key_UP 0x4800<BR>#define Key_A 0x1e41<BR>#define Key_a 0x1e61<BR>#define Key_B 0x3042<BR>#define Key_b 0x3062<BR>#define Key_C 0x2e43<BR>#define Key_c 0x2e63<BR>#define Key_E 0x1245<BR>#define Key_e 0x1265<BR>#define Key_ENTER 0x1c0d</P>
<P>/*用户选择的行,缺省为0*/<BR>int activeline=0; <BR>/*存储用户选择区*/<BR>char buf[8*4*2];</P>
<P>/*用来激活用户选择的行*/<BR>void modicolor(char *buf,int active)<BR>{ int red=(WHITE+(RED<<4)); /*红底白字*/<BR> int white=(WHITE+(BLUE<<4)); /*蓝底白字*/<BR> int i=1;<BR> while(i<=63)<BR> {<BR> if (i/16==active){<BR> if ((i%2)!=0)<BR> *(buf+i)=red;<BR> } <BR> else if((i%2)!=0)<BR> *(buf+i)=white;<BR> i+=2;<BR> }<BR> activeline=active;<BR> puttext(9,10,16,13,buf);<BR>}</P>
<P>int main()<BR>{<BR> int ky=0; <BR> char ch;<BR> textattr(WHITE+(BLACK<<4));<BR> clrscr();</P>
<P> textmode(C80);<BR> textattr(RED+(5<<4));<BR> window(7,8,19,15); /*生成一个洋红色窗口*/<BR> clrscr();<BR> textattr(WHITE+(BLUE<<4));<BR> window(8,9,18,14); /*洋红色窗口内嵌一个蓝色窗口*/<BR> clrscr();<BR> gotoxy(3,2);<BR> cprintf("E:exit");<BR> gotoxy(3,3);<BR> cprintf("A:dir");<BR> gotoxy(3,4);<BR> cprintf("B:dir/p");<BR> gotoxy(3,5);<BR> cprintf("C:dir/w\r\n");<BR> gettext(9,10,16,13,buf);<BR> modicolor(buf,0);</P>
<P> while(ky!=Key_E && ky!=Key_e)<BR> {<BR> ky=bioskey(0);<BR> switch(ky)<BR> {<BR> case Key_UP:<BR> <BR> if (activeline==0){<BR> modicolor(buf,3);<BR> break;<BR> }<BR> if (activeline!=0){<BR> modicolor(buf,--activeline);<BR> break;<BR> }<BR> case Key_DOWN:<BR> if (activeline==3){<BR> modicolor(buf,0);<BR> break;<BR> }<BR> if (activeline!=3){<BR> modicolor(buf,++activeline);<BR> break;<BR> }<BR> case Key_ENTER:<BR> if (activeline==0) exit(0);<BR> if (activeline==1) goto dir;<BR> if (activeline==2) goto dirp;<BR> if (activeline==3) goto dirw;<BR> case Key_A:<BR> case Key_a:<BR> dir: system("dir");<BR> getch();<BR> modicolor(buf,activeline);<BR> break;<BR> case Key_B:<BR> case Key_b:<BR> dirp: system("dir /p");<BR> getch();<BR> modicolor(buf,activeline);<BR> break;<BR> case Key_C:<BR> case Key_c:<BR> dirw: system("dir /w");<BR> getch();<BR> modicolor(buf,activeline);<BR> break;<BR> }</P>
<P> }</P>
<P>}<BR></P>
<P><BR> </P>[attach]16693[/attach]<BR>
页:
[1]
