V
主页
基于C++MFC实现模拟时钟程序
发布人
设计二 模拟时钟程序 一、概述 计时器是程序中最常用的后台任务机制之一,其时间间隔最低约 55 毫秒,被广泛用于时钟、磁盘备份程序或需要在某一时刻运行的程序等。而模拟时钟是一种集计时器和时 钟显示于一体的程序。 以实例为背景学习基于 MFC 的 WINDOWS 应用程序设计,编写一个指针式时钟程序,此程序在屏幕正中有一个指针式钟面,屏幕下方或右方以数字方式显示日期和时间。指针式的时钟表盘为椭圆形或圆形,并且圆周上有分布均匀的 12 个刻度,刻度要求显示清晰,钟面上有长度和颜色及粗细各不相同的指针,即时针、分针、秒针,以便各个指针重合时亦可以轻易辨认,指针的运动要求具有规律性,且为顺时针。数字钟的钟面为一个规则的矩形,其显示时间的格式是时:分:秒,小时为 24 进制,分钟和秒是 60 进制,指针式的时钟和数字式的时钟显示的时间同步,且两个时钟所显示的时间与计算机的系统时间一致。 通过对指针式时钟的设计,可以掌握 API 或 MFC 编程,其中包括各种视图类的作用、绘图函数的使用、计时器的操作、对话框的使用及应用程序的调试,同时对面向对象与可视化程序设计有一定的认识,并提高动手编程的能力。 二、设计任务 1、提出总体方案的设计思想和原理,绘制程序流程图和描述程序的功能,并说明程序的特点和难点。 2、编程要求 (1)为该程序设计一个美观大方的图标。 (2)程序界面设计合理,色彩得体大方,显示正确。 (3)用绘图函数绘制钟的界面图。时针、分针和秒针形象美观,即使各指针重合也可辨认。 (4)各指针运动规律正确。 (5)客户区中显示数字时钟,数字式时钟的时间显示与指针式时钟显示一致。 (6)提供对话框由用户设置和修改当前新的时间。 3、调试程序,达到所要求的功能。 三、设计步骤 1、钟面功能设计 根据自己的考虑绘制钟的界面图,具体也可参照下图: 或另一种方案图: 或另一种方案图: 2、 具体设计 本题主要涉及到的知识点有:时钟指针运动算法、屏幕重绘方法、定时器消息、菜单命令、对话框、画笔/画刷、显示文字等。指针运动算法和屏幕重绘方法是本程序主要难点所在。 不论何种指针,每次转动均以π/30 弧度(一秒的角度)为基本单位,且都以表盘中心为转动圆心。计算指针端点(x, y)的公式如下: x =圆心 x 坐标 + 指针长度 * cos (指针方向角) y =圆心 y 坐标 + 指针长度 * sin (指针方向角) 注意,指针长度是指自圆心至指针一个端点的长度(是整个指针的一部分),由于指针可能跨越圆心,因此一个指针需要计算两个端点。 三个指针的运动是相关联的,秒针转一圈引起分针运动一格,分针转一圈引起时针运动一格,因此应该使用一个定时器消息来处理指针的运动。 (1) OnDraw()函数实现对系统时间的获取和绘制椭圆表面和时钟指针。 (2) 设置计时器,创建窗口时调用 SetTimer()函数启动一个计时器不断发出 WM_TIMER消息。 (3) 用 TextOut()函数显示数字钟。 (4) 添加菜单,用菜单项控制弹出对话框设置显示的时间。 3、 重点和难点 (1) 使用计时器需要了解两个函数:SetTimer()函数用来设置一个计时器以指定的时间间隔触发,KillTimer()函数用来使一个正在运行的计时器停止。 (2) 时钟指针的显示和移动是一个需要注意的方面。 (3) 注意屏幕重绘方法。 (4) 掌握如何显示文本,将用户设置的时间更新时钟的显示。 四、思考题 1. 程序中如何实现时钟时间与计算机系统时间保持一致? 2. SetTimer()函数和 KillTimer()函数的调用位置与程序运行的关系? 3. 说明 SetTimer()函数、WM_TIMER 消息和 OnTimer()函数的调用关系? 4. 实现数字钟时,涉及到的编程有哪些?
打开封面
下载高清视频
观看高清视频
视频下载器
基于C++MFC实现二叉树操作演示动画
基于C/C++MFC实现ATM仿真软件
C++MFC迷宫
基于C++MFC实现网络聊天室软件
C++MFC学生信息管理系统
基于Qt实现图书室管理系统
基于MFC实现智慧教学管理软件系统
基于MFC实现高校职工信息管理系统
基于Qt实现篮球联赛管理系统
基于C++Qt实现北京市地铁票价自助查询系统
C语言实现基于Huffman编码的文件压缩与解压程序
C++MFC校园导航系统
基于Qt实现电话号码录入查询及修改系统
C语言实现智能交通预约系统
C语言实现运动会积分流程管理系统
Qt银行定期储蓄管理系统
C语言实现手机通信录系统
基于C++MFC实现时钟小程序
C语言实现热播电视剧的评价及推荐系统
C++MFC二叉树功能演示
基于Qt实现地铁售票与乘车引导系统
C++MFC聊天室程序
C语言实现上网计费系统模拟系统
基于C++Qt实现图书信息管理系统
C语言实现基于角色管理的简易家谱管理系统
基于Qt实现汽车客运公司售票系统
C语言实现移动营业厅程序
基于C++MFC实现南邮图书馆管理系统
C/C++ 银行系统(控制台)
C语言实现考试管理系统
C语言实现票房统计系统
C语言实现智能实验室预约系统
C语言实现基于数据分析的小区电量扩容推荐程序
基于C++和QT的图书信息管理系统
基于C++和Qt实现的考试系统
基于Qt实现篮球联赛个人技术数据处理系统
基于Qt实现人生重开模拟器
C语言C++MFC模拟电影院售票系统
【未来青年演讲】人工智能趋势分析:在互联网中的机遇和挑战
基于MFC实现十六进制计算器