下面是本人做的一个关于菜单的程序,其中对菜单的各种改变采用了重画..; J* N' ^ H9 Z4 Z
源程序如下:
7 L' {' p- i- k$ y2 Y" Y #include graphics.h
& b: N9 a C# v' N #include stdio.h8 T& w& _, k9 U( ^2 f9 K) R
#include stdlib.h
+ W! D0 b3 z7 Q7 c1 q #include bios.h4 H# N! N$ m) Z2 L/ y0 ~1 a1 C
#define MenuNum 3/ @. A' a: b7 B% U3 i
#define FALSE 0
' R* j- {( @; o( m #define TRUE 1- K+ n1 Z& a8 E: h6 a+ ?" q0 L
#define START 1
/ t! m z0 |% O Y8 }5 p% J2 r. ] #define LEFTSHIFT 2
2 n3 V$ ?+ E+ H2 ~0 i, b #define RIGHTSHIFT 3. e. O* P" K0 c8 Y9 h
#define ENTER 4
! e% e H5 S% ?! d0 J! v #define EXIT 5- z6 Q/ k5 t9 }' E! U1 y4 J( G
#define UP 6 H, [/ E7 H- [8 K8 X4 o
#define DOWN 7
$ G; [) d) U5 m6 M, V% \: c; m typedef structmenu;+ i: |$ R0 k" }9 v3 p) X& ]) G
void *saveImage; /*保存菜单覆盖的区域*/
3 ]1 R+ j+ K9 o" ], R int mHeight,mWidth; /*窗口高,宽*/
' @: ? z2 M. N* b( F8 l int mutex=0;1 K7 e- w' K! ]2 ^
menu MainMenu=},
4 @! S+ w) d8 s3 P& b },
: {. C5 g5 G6 j9 l- M. V( } }};
. R3 M$ D l8 {4 E0 ]( l$ y. k# x. D void showItems /*显示*/
' U1 s" E6 r. A9 q0 p) X }7 {& v( h" X3 g& U
void init
" d- {7 ~ X- l# {5 n4 |4 S5 d initm$ f6 ]% }" \/ o2 Q1 T- O( j# t3 ]
}
9 J4 d! @, H: o' j% ]$ b1 O/ \ void process /*主菜单移动*/
+ \+ t5 _: a3 X" O3 V, | void process3 /*子菜单移动*/
( e+ S5 p" ~4 ]5 z7 M c2 ^ process1 /* 退出 */
' P7 O2 }. T t/ K7 f main6 {6 E0 I% k6 s/ @' D
else. g: C- s, V' x
process;
' `. H; y/ R2 n( t5 [0 p W }
6 ]( e7 _+ `6 B% l/ f. Y7 ~+ a5 t break;
; F" G. R$ M2 l4 @7 o+ F( T+ U case RIGHTSHIFT:
" |' D- R" Y0 c6 e, ` if
2 o- B! e' F' \" } r else+ ^& o, Y+ Y8 i m
process;; W" {4 M1 j" q, g( y2 h7 f, U
}5 H* ]4 d: \5 U. W% L1 `& L
break;' H) f/ j# |& `2 f. c" L
case ENTER:
7 L! L5 W* N2 j6 n) d/ T if
. n+ @8 O: C$ c- k else
, t2 D2 [7 C* b+ R6 q1 { process1;: u7 A5 }' R% x O& T
break;$ G) d5 W1 D C; x8 D
case EXIT:6 _ x( e F1 y8 S, u. f6 H
if" D) P: F9 ]1 g
else: D3 _+ @. q9 \
quit=TRUE;' n8 c- V) Z$ u6 y3 A3 D. }. E; V
break;
: h. m( E3 y5 y: }- \4 P case DOWN:+ Z) h1 E- |( j4 j6 e4 ~
if
' |: t$ ]( W% b) P: r! i {* s- `2 }9 O+ \; d3 V. B
& |