struct clock {
int hour
int minute
int second
}
typedef struct clock CLOCK
/*
函数参数:无
函数返回值:无
*/
void Update(CLOCK *myclock) {
myclock->second++
if (myclock->second == 60) { /*若second值为60,表示已过1分钟,则 minute值加1*/
myclock->second = 0
myclock->minute++
}
if (myclock->minute == 60){ /*若minute值为60,表示已过1小时,则 hour值加1*/
myclock->minute = 0
myclock->hour++
}
if (myclock->hour == 24) { /*若hour值为24,则hour的值从0开始计时*/
myclock->hour = 0
}
}
/*
函数功能:时、分、秒时间的显示
函数参数:无
函数返回值:无
*/
void Display(CLOCK *myclock) { /*用回车符'\r'控制时、分、秒显示的位置*/
printf("%2d:%2d:%2d\r", myclock->hour, myclock->minute, myclock->second)
}
/*
函数功能:模拟延迟1秒的时间
函数参数:无
函数返回值:无
*/
void Delay(void) {
long t
for (t = 0t <290000000t++) {
/*循环体为空语句的循环,起延时作用*/
}
}
int main(){
CLOCK myclock
long i
myclock.hour = myclock.minute = myclock.second = 0 /*hour,minute,second赋初值0*/
for (i = 0i <100000i++) { /*利用循环结构,控制时钟运行的时间*/
Update(&myclock) /*时钟更新*/
Display(&myclock) /*时间显示*/
Delay() /*模拟延时1秒*/
}
return 0
}
/*开发环境:turbo c 2.0模拟时钟转动程序代码*/ #include"graphics.h" #include"math.h" #include"dos.h" #define pi 3.1415926 #define X(a,b,c) x=a*cos(b*c*pi/180-pi/2)+300 #define Y(a,b,c) y=a*sin(b*c*pi/180-pi/2)+240 #define d(a,b,c) X(a,b,c)Y(a,b,c)line(300,240,x,y) void init() /*划时钟边框函数*/ { int i,l,x1,x2,y1,y2 setbkcolor(1) circle(300,240,200) circle(300,240,205) circle(300,240,5) for(i=0i<60i++) /*划钟点上的短线*/ { if(i%5==0) l=15 else l=5 x1=200*sin(i*6*pi/180)+300 y1=200*cos(i*6*pi/180)+240 x2=(200-l)*sin(i*6*pi/180)+300 y2=(200-l)*cos(i*6*pi/180)+240 line(x1,y1,x2,y2) } } main() { int x,y,i,k=1 int gdriver=9,gmode=2 unsigned char h,m,s int o,p,q float n struct time t[1] struct date d[1] initgraph(&gdriver,&gmode,"c:\\tc") initgraph(&gdriver,&gmode,"c:\\tc") for(i=0i<=6i++) { settextstyle(TRIPLEX_FONT,HORIZ_DIR,i)/*控制输出字符的字体,方向,大小*/ cleardevice() settextjustify(1,1)/*在指定坐标上输出字符串*/ outtextxy(300,80,"12") outtextxy(300,390,"6") outtextxy(140,230,"9") outtextxy(460,230,"3") outtextxy(380,100,"1") outtextxy(220,100,"11") outtextxy(430,160,"2") outtextxy(430,310,"4") outtextxy(380,370,"5") outtextxy(220,370,"7") outtextxy(160,160,"10") outtextxy(160,310,"8") } init() setwritemode(1)/*设置画线的输出模式*/ if(k!=0) { getdate(d)/*获得系统日期函数*/ o=d[0].da_year p=d[0].da_mon q=d[0].da_day gettime(t)/*获得系统时间函数*/ h=t[0].ti_hour m=t[0].ti_min s=t[0].ti_sec } setcolor(7)/*设置时针颜色*/ n=(float)h+(float)m/60 d(150,n,30)/*画出时针*/ setcolor(14)/*设置分针颜色*/ d(170,m,6)/*画出分针*/ setcolor(4)/*设置秒针颜色*/ d(190,s,6)/*画出秒针*/ while(!kbhit()) /*控制程序按下任意键退出*/ { while(t[0].ti_sec==s) gettime(t) gotoxy(44,18)/*使光标移动到指定坐标*/ printf("\b\b\b\b\b\b\b\b\b")/*退格,使表示时间的字符串不断变化*/ sound(400)/*按给定的频率打开PC扬声器*/ delay(70)/*中断程序的执行,时间为70毫秒*/ sound(200) delay(30) nosound()/*按给定的频率关闭PC扬声器*/ setcolor(4) d(190,s,6) s=t[0].ti_sec d(190,s,6) if(t[0].ti_min!=m) { setcolor(14) d(170,m,6) m=t[0].ti_min d(170,m,6) } if(t[0].ti_hour!=h) { setcolor(7) d(150,h,30) h=t[0].ti_hour d(150,h,30) sound(1000) delay(240) nosound() delay(140) sound(2000) delay(240) nosound() } if(s<10) /*用字符的形式输出时间*/ { if(m<10) printf("%u:0%u:0%u",h,m,s) else printf("%u:%u:0%u",h,m,s) } else { if(m<10) printf("%u:0%u:%u",h,m,s) else printf("%u:%u:%u",h,m,s) } gotoxy(34,19)/*在指定坐标上输出日期*/ printf("%d年%d月%d日",o,p,q) printf("\b\b\b\b\b\b\b\b\b") } getch() closegraph() }去繁存简,mfc timer消息处理 GDI画东西,必要的东西:mfc 的 timer 一个.
dc 一个.
需要用到的函数
settimer() 定时100毫秒产生一个timer消息出发ontimer, 在ontimer里面获取当前系统时间 systemtime
如果时间改变了用dc重画时钟界面, 最简单的 moveto lineto.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)