《VC++程序设计》课程设计报告

  • 格式:doc
  • 大小:70.50 KB
  • 文档页数:9

衡阳师范学院

题 目:简单的时钟程序

指导老师:邓红卫老师

专 业:计算机科学与技术专业

班 级:1001

姓 名:陈正波 黄智军 刘武

学 号:10190101 05 11

1

目录

摘要....................................................2

第一章 问题解析.....................................2

1.1 问题描述......................................2

1.2 要求..........................................2

1.3 程序设计难点..................................2

第二章 程序设计过程.................................2

2.1 手动设置时间的对话框.........................3

2.2 获得系统时间.................................3

2.3 制作时钟表盘.................................3

2.4 表针设置.....................................3

2.5 设置程序窗口的尺寸和背景色.......................3

第三章 详细程序 ....................................3

第四章 运行结果.....................................6

4.1 运行时的画面.................................6

第五章 工作总结.....................................7

2

简单的时钟程序

学生:陈正波 黄智军 刘武 指导老师:邓红卫

摘要:通过对Visual C++的一年学习,我们已经基本了解了关于MFC类库的知识,还有关于Window编程的知识,粗略地知道了怎样编程,并且脑中有了面向过程和面向对象的编程思想,也掌握了一些关于这个面向对象的编程语言的调试技术,通过这次实际操作,我们能看到自己的不足,解决不断出现的问题,从而掌握自己不懂的或者薄弱的知识点。Visual C++中通过MFC类库介绍了Windows的用户界面对象,比如:窗口、系统菜单、标题栏、菜单栏、工具条、客户区、状态栏、对话框等等。通过Windows编程可根据系统默认的绘图工具,结合画笔,画刷,字体,位图和光标等绘图工具的编程方法。Windows应用程序的绘图过程:应用程序->设备环境->图形设备接口->设备驱动程序->设备输出。Windows编程涉及到了类的继承、封装、派生、多态等性质,还涉及到基本的指针等。

关键字:Windows编程 MFC类 对话框 时钟程序

第一章:问题解析

1.1问题描述

时钟程序是通过获得系统时间,在窗口中显示一个时钟。

3 1.2要求

1.时钟窗口大小合理,色彩美观大方

2.时钟表盘的时间间隔正确,指针能正确的移;,

3.能够正确的获得系统时间,并且进行手动设置;

1.3程序设计难点

窗口大小的设置,系统时间的获得,指针的正确移动,表盘的制作,背景颜色的设定,激活指针;

第二章:程序设计过程

2.1手动设置时间的对话框

在对话框中添加静态文本、编辑、按钮三个控件,设置Ctrl+D为快捷键。

2.2获得系统时间

通过调用GetCurrentTime()函数,获得系统时间。

2.3制作时钟表盘

用Rectangle()函数画一个正方形,再用Ellipse()函数画两个半径不同的同心圆,通过计算,在两个同心圆之间利用TextOut()函数输出12个时间数字。

2.4表针设置

利用鼠标消息函数MoveTo()和LineTo()来控制时钟指针的移动

2.5 设置程序窗口的尺寸和背景色

在CMainFrame类的PreCreateWindow(CREATESTRUCT& cs)函数

4 中设置窗口大小。在CMyTimeView类的OnCreate(LPCREATESTRUCT

lpCreateStruct)函数中修改窗口的背景色。

第三章 详细程序

1.新建一个名为MyTime的单文档MFC工程。

2.构建一个用于手动设置时间的对话框。

(1)调用OnTimer(UINT nIDEvent)函数,实现对话框的功能,代码如下:

CTime time=CTime::GetCurrentTime();

CString display;

display.Format("%d.%d.%d %d:%d:%d

",time.GetYear(),time.GetMonth(),time.GetDay(),time.GetHour(),time.GetMinute(),time.GetSecond()); // 时钟的格式化

this->GetDlgItem(IDC_EDIT1)->SetWindowText(display);

CDialog::OnTimer(nIDEvent);

(2)设置对话框背景色,代码如下:m_BrushBkClr.CreateSolidBrush(RGB(255,0,255));//创建话刷,设置编辑框背景色

CRect rect;

GetClientRect(&rect); //计算对话框的尺寸

dc.FillSolidRect(&rect,RGB(192,248,202)); //绘制对话框背景色

5 3.主要程序代码

(1)在CMyTimeView类中定义函数OnTimer(UINT nIDEvent),实现表盘的制作,代码如下:

CTime time=CTime::GetCurrentTime(); //获得系统当前时间函数

CDC *pDC=this->GetDC();

pDC->Rectangle(44,20,206,184); //画一个正方形

pDC->Ellipse(44,20,206,184);

pDC->Ellipse(64,40,186,164); //画两个圆

pDC->TextOut(113,23,"12");

pDC->TextOut(52,94,"9");

pDC->TextOut(113,166,"6");

pDC->TextOut(192,94,"3");

pDC->TextOut(55,60,"10");

pDC->TextOut(80,33,"11");

pDC->TextOut(152,31,"1");

pDC->TextOut(180,55,"2");

pDC->TextOut(180,130,"4");

pDC->TextOut(152,157,"5");

pDC->TextOut(80,152,"7");

pDC->TextOut(60,130,"8"); //输出12个时钟数字

(2) 实现时钟指针移动的代码如下:

6 int x=120;

int y=100; //设置圆心位置

pDC->MoveTo(x,y);

hour=time.GetHour();

if (hour>12)

{

hour=hour-12;

}

min0=time.GetMinute();

sec=time.GetSecond(); //初始化当前时间

pDC->LineTo(x+(long)55*cos(PI/2-2*PI*sec/60.0),y-(long)55*sin(PI/2-2*PI*sec/60.0));

pDC->MoveTo(x,y);

pDC->LineTo(x+(long)50*cos(PI/2-2*PI*min0/60.0),y-(long)50*sin(PI/2-2*PI*min0/60.0));

pDC->MoveTo(x,y);

pDC->LineTo(x+(long)35*cos(PI/2-5*2*PI*hour/60.0),y-(long)35*sin(PI/2-5*2*PI*hour/60.0)); //实现时钟指针的移动

CView::OnTimer(nIDEvent);

(3) 激活时钟

在CMyTimeView::OnCreate()函数中添加代码 SetTimer(1,1000,NULL);

7 在CMyTimeView类中定义函数OnMenutime(),用于激活手动设置时间对话框,代码如下:

CTimeDialog dlg;

dlg.DoModal();

(4)在PreCreateWindow(CREATESTRUCT& cs)函数中设置屏幕大小,并对窗口的标题进行修改,代码如下:

cs.cx=250;

cs.cy=320; //设置长和宽

cs.style&=~FWS_ADDTOTITLE;//去除标题栏文字前面的"无标题"

m_strTitle = _T("简单时钟"); //设置程序标题

(5)在CMyTimeView类的OnCreate()函数中实现背景黑色的绘制,代码如下:

SetClassLong(m_hWnd,GCL_HBRBACKGROUND,(LONG)GetStockObject(BLACK_BRUSH));

第四章 运行结果

4.1运行时的画面:

简单的时钟程序:当用户进入一些不能显示时间的程序时运行这个程序,可以方便的查看时间,还可以通过手动设置当前时间,只要点击关闭按钮即可关闭程序