资源预览内容
第1页 / 共10页
第2页 / 共10页
第3页 / 共10页
第4页 / 共10页
第5页 / 共10页
第6页 / 共10页
第7页 / 共10页
第8页 / 共10页
第9页 / 共10页
第10页 / 共10页
亲,该文档总共10页全部预览完了,如果喜欢就下载吧!
资源描述
成都信息工程学院课程设计简易时钟显示设计薛 昊(310081002013)指导老师:王中科提2010-12-24交日期简易时钟显示设计摘要本文讨论的是基于 Visual C+ 6.0平台所设计的简易时钟显示程序。本设计 使用定时器,并通过调用绘图函数,画出模拟的时钟表盘,其秒针每秒钟跳动一 次。除此之外,本时钟还有整点和半点报时功能。通过本设计,我们进一步掌握Visual C+应用程序,系统地学习面向对象编 程思想,了解MFC架构,逐步熟悉可视化编程环境Visual C+。关键字:Visual C+; 时钟目次总页数:6页1、绪论11.1选题意义11.2 设计目标12、开发环境 13、需求分析 14、系统设计 14.1 概要设计14.2 详细设计1(1) 、步骤一:创建应用程序框架。 1(2) 、步骤二:删除不需要的菜单资源。 1(3) 、步骤三:添加消息映射和处理函数。2(4) 、步骤四:定时器的创建和销毁。2(5) 、步骤五:定义必要的成员变量和成员函数。 2(6) 、步骤六:编写绘制表盘和指针的代码。 2(7) 、步骤七:添加定时器消息响应函数代码。4(8) 、步骤八:添加视窗大小改变时的消息响应代码。5(9) 、步骤九:编译运行该程序。55、测试56、结论61、绪论1.1 选题意义此设计选择意义在于引导学生学会设计简单的时钟显示窗口,进一步掌握 Visual C+应用程序,系统地学习面向对象编程思想,了解MFC架构,逐步熟 悉可视化编程环境Visual C+,并在此环境下设计并实现一个简易时钟显示程 序。1.2 设计目标使时钟显示含有一下功能:(1)、基本功能:实现模拟时钟表盘,时针,分针以及秒针的显示。(2)、计时功能:显示当前的时间,并且秒针每秒跳动一次,分针每分钟跳 动一次,时针每小时跳动一次。(3)、报时功能:时钟在整点和半点的时候具有报时的功能。2、开发环境本设计基于 Microsoft Visual C+ 6.0 实现的。3、需求分析该简易时钟显示程序的具体描述如下:本设计使用定时器,并通过调用绘图 函数,画出模拟的时钟表盘,其秒针每秒钟跳动一次。除此之外,本时钟还有整 点和半点报时功能。可以让用户实时的显示当前时间,方便快捷。4、系统设计4.1 概要设计本设计使用定时器,并通过调用绘图函数,画出模拟的时钟表盘,其秒针每 秒钟跳动一次。除此之外,本时钟还有整点和半点报时功能。4.2 详细设计(1)、步骤一:创建应用程序框架。在VC开发环境中选择菜单File-New,在New对话框中选择Projects标签, 从左边的列表中选择MFC AppWizard(exe),在右侧的Project Name框中输入工 程名:Clock,单击0K按钮,启动MFC的应用程序向导AppWizard,在MFC AppWizard 的第一步中选择 “Single Document,在 MFC AppWizard 的第二步和 第三步均接受默认设置,在 MFC AppWizard 的第四步中取消工具栏、状态栏、 打印与预览等特性前面的复选框,使工程不包含这些内容,在第五步仍接受默认 设置,在第六步单击“finish”按钮,单击0K按钮,生成Clock工程。(2)、步骤二:删除不需要的菜单资源。选择ResourceView面板,单击加号,展开菜单资源,双击IDR_MAINFRAME 菜单资源,在右侧的资源编辑器中,删除所有不需要的菜单项,只留下“文件 / 退出”和“帮助”菜单项,(3) 、步骤三:添加消息映射和处理函数。按Ctrl+W 键,打开ClassWizard,选择其中的Message Maps标签,在Class name 栏中选中 CClockView,在 Object Ids 列表框中选中 CClockView,在 Message 列表框中选中WM_CREATE消息,单击Add Function按钮,则OnCreate函数出 现在下面的成员函数列表中,再分别在Messages列表框中双击WM_DESTROY、 WM_PAINT、WM_SIZE 消息,添加相应的处理函数:OnDestry、OnPaint、OnSize,(4) 、步骤四:定时器的创建和销毁。我们要在视窗的创建和关闭同时进行定时器的创建和销毁。在 ClassWizard 对话框中,从成员函数列表中选择 OnCreate 函数,单击 Edit Code 按钮,打开 ClockView.cpp 文件,定位到 OnCreate 函数的首部,向其中添加如下代码 (SetTimer(l,1000,NULL);)。添加的这一行代码定义了一个标号为1的定时器, 并且定时为1秒。将光标定位到 OnDestroy()函数中,向其中添加如下代码 (KillTimer;)。这句代码将在视窗关闭时销毁定时器1。(5) 、步骤五:定义必要的成员变量和成员函数。选择 ClassView 面板,单击加号,展开该工程的类列表,双击 CClockView 类名,在右侧的文件编辑器中打开ClockView.h文件,在其中定义以下的保护类 型成员变量。然后再定义以下公有类型的成员函数。protected:intcxClient;intcyClient;SYSTEMTIMEstPrevious;BOOLfChange;CDC*pdc;HDChdc;PAINTSTRUCTps;SYSTEMTIMEst;public:void SetIsotropic(HDC hdc, int cxClient, int cyClient);void DrawClock(HDC hdc);void DrawHands(HDC hdc, SYSTEMTIME* pst, BOOL fChange);void RotatePoint(POINT pt, int iNum, int iAngle);其中SetIsotropic函数用于设置各向同性的映射模式;DrawClock函数用于 绘制表盘;DrawHands函数用于画表针。RotatePoint函数用于绘制表盘上的点和 表针时所必须的旋转计算,该函数要用到三角函数运算,因此需要 math.h 头文 件的支持。(6) 、步骤六:编写绘制表盘和指针的代码。在 ClassView 面板中单击 CClockView 类前面的加号,然后双击 CClockView 类的OnPaint()函数。在其中添加如下代码:GetLocalTime(&st);stPrevious=st;hdc=(HDC)dc;SetIsotropic(hdc,cxClient,cyClient);SelectObject(hdc,GetStockObject(BLACK_PEN);DrawClock(hdc);DrawHands(hdc,&stPrevious,TRUE);该函数进行初始化窗口的绘制,首先获取当前时间,然后调用 SetIsotropic 函数设置映射模式和窗口范围,调用 SelectObject 设置画笔,再调用 DrawClock 函数画表盘,最后调用 DrawHands 函数画指针。因此需要在该文件的后面依次 添加如下的成员函数代码:一、Setlsotropic 函数void CClockView:SetIsotropic(HDC hdc,int cxClient, int cyClient)SetMapMode(hdc,MM_ISOTROPIC);SetWindowExtEx(hdc,1000,1000,NULL);SetViewportExtEx(hdc,cxClient/2,-cyClient/2,NULL);SetViewportOrgEx(hdc,cxClient/2, cyClient/2,NULL);在 SetIsotropic 函数中,首先调用 SetMapMode 设置各向同性映射模式,然 后将窗口范围设置为 1000*1000,然后设置视图的范围和原点。二、DrawClock 函数void CClockView:DrawClock(HDC hdc)int iAngle;POINT pt3;for (iAngle=0;iAnglewHour*30)%360+pst-wMinute/2; iAngle1=pst-wMinute*6;iAngle2=pst-wSecond*6; memcpy(ptTemp,pt,sizeof(pt);for(i=fChange ? 0:2; i3;i+)RotatePoint(ptTempi,5,iAnglei); Polyline(hdc,ptTempi,5); DrawHands 函数负责绘制时钟的时针、分针和秒针的轮廓。首先我们定义它 们垂直向上时的形状坐标,并存放在 POINT 结构的数组中,然后根据当前时间, 通过 RotatePoint 函数进行旋转,并调用 Polyline 函数进行绘制和显示。四、RotatePoint 函数void CClockView:RotatePoint(POINT pt, int iNum, int iAngle)int i;POINT ptTemp;for(i=0;iiNum;i+)ptTemp.x=(int) (pti.x*cos(PI*iAngle/360)+ pti.y*sin(PI*iAngle/360);ptTemp.y=(int) (pti.y*cos(PI*iAngle/360)-pti.x*sin(PI*iAngle/360);pti=ptTemp
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号