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