user-0 提问: 利用显示页和编辑页交替变化实验动画效果，为何程序运行后，看不到动画效果？

回复:
user: user-1
content: 仅供参考#include <graphics.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <dos.h> #include <conio.h> #include <time.h> #include <math.h> time_t t; char timestr1[30];//DDD MMM dd hh:mm:ss YYYY char timestr2[30];//DDD MMM dd hh:mm:ss YYYY char hhmmss[9]; int graphdriver,graphmode,page; int i,xo,yo,r0,r1,r2,r3,r4,r5,r6,r7; int x1,y1,x2,y2; int hh,mm,ss; double c,s; int xasp,yasp; void main() {     xo=60;yo=60;     r0=5; //轴     r1=20;//时针     r2=36;//分针     r3=45;//秒针     r4=50;//时刻度     r5=53;//分刻度     r6=55;//刻度外     r7=59;//表盘     graphdriver=VGA;     graphmode=VGAMED;     initgraph(&graphdriver,&graphmode,"D:\\BC\\BGI");     getaspectratio(&xasp, &yasp);     page=0;     timestr2[0]=0;     while (1) {         if (kbhit()) break;         time(&t);         strcpy(timestr1,ctime(&t));         if (strcmp(timestr1,timestr2)) {             strcpy(timestr2,timestr1);             hh=atoi(timestr2+11);             mm=atoi(timestr2+14);             ss=atoi(timestr2+17);             setvisualpage(page);             setactivepage(1-page);             cleardevice();             sprintf(hhmmss,"%02d:%02d:%02d",hh,mm,ss);             outtextxy(28,0,hhmmss);             pieslice(xo,yo,0,360,r0);             circle(xo,yo,r7);             for (i=0;i<60;i++) {                 c=cos(i*6*3.14159265/180);                 s=sin(i*6*3.14159265/180)*xasp/yasp;                 if (0==(i%5)) {                     x1=xo+r4*c;                     y1=yo+r4*s;                 } else {                     x1=xo+r5*c;                     y1=yo+r5*s;                 }                 x2=xo+r6*c;                 y2=yo+r6*s;                 line(x1,y1,x2,y2);                 if (((hh%12)*5+mm/12+45)%60==i) {                     x2=xo+r1*c;                     y2=yo+r1*s;                     setlinestyle(0,-1,3);                     line(xo,yo,x2,y2);                     setlinestyle(0,-1,1);                 }                 if ((mm+45)%60==i) {                     x2=xo+r2*c;                     y2=yo+r2*s;                     setlinestyle(0,-1,3);                     line(xo,yo,x2,y2);                     setlinestyle(0,-1,1);                 }                 if ((ss+45)%60==i) {                     x2=xo+r3*c;                     y2=yo+r3*s;                     line(xo,yo,x2,y2);                 }             }             page=1-page;         }         delay(100);     }     getch();     closegraph(); }

user: user-1
content: http://www.easyx.cn

user: user-2
content: 引用 4 楼 yerssa 的回复:[quote=引用 3 楼 user-2 的回复:] [quote=引用 2 楼 yerssa 的回复:] [quote=引用 1 楼 user-2 的回复:] 页面交换需要，要延时的 画出来也许很快，那样就看不到中间结果了 那怎么才能看到动画效果呢？程序需要改哪里？[/quote] TC有delay 函数，和 Windows Sleep效果一致，  不然自己用定时器，实现之，需要操作硬件 用outportb 设置定时器时间间隔，并且需要设置中断向量。 在中断响应函数里，做计数。轮询该计数，就可以了[/quote] 恩，看到动画效果了，但还有个问题，就是为什么生成的.EXE文件，双击后，只是一个窗口一闪而过，其它什么也看不到呢？[/quote] windows下控制台，现在就这样，你最后加一个延时，或者getchar();之类的把它画面停住，就可以了。  另外TC的画图程序，在XP下运行不一定成功，在Win98下是可以的  可以尝试，在虚拟机中，DOS下运行。

user: user-0
content: 引用 3 楼 user-2 的回复:[quote=引用 2 楼 yerssa 的回复:] [quote=引用 1 楼 user-2 的回复:] 页面交换需要，要延时的 画出来也许很快，那样就看不到中间结果了 那怎么才能看到动画效果呢？程序需要改哪里？[/quote] TC有delay 函数，和 Windows Sleep效果一致，  不然自己用定时器，实现之，需要操作硬件 用outportb 设置定时器时间间隔，并且需要设置中断向量。 在中断响应函数里，做计数。轮询该计数，就可以了[/quote] 恩，看到动画效果了，但还有个问题，就是为什么生成的.EXE文件，双击后，只是一个窗口一闪而过，其它什么也看不到呢？

user: user-2
content: 引用 2 楼 yerssa 的回复:[quote=引用 1 楼 user-2 的回复:] 页面交换需要，要延时的 画出来也许很快，那样就看不到中间结果了 那怎么才能看到动画效果呢？程序需要改哪里？[/quote] TC有delay 函数，和 Windows Sleep效果一致，  不然自己用定时器，实现之，需要操作硬件 用outportb 设置定时器时间间隔，并且需要设置中断向量。 在中断响应函数里，做计数。轮询该计数，就可以了

user: user-0
content: 引用 1 楼 user-2 的回复:页面交换需要，要延时的 画出来也许很快，那样就看不到中间结果了 那怎么才能看到动画效果呢？程序需要改哪里？

user: user-2
content: 页面交换需要，要延时的 画出来也许很快，那样就看不到中间结果了