基于MFC的大屏幕数字时钟文档格式.docx
《基于MFC的大屏幕数字时钟文档格式.docx》由会员分享,可在线阅读,更多相关《基于MFC的大屏幕数字时钟文档格式.docx(13页珍藏版)》请在冰点文库上搜索。
关键字:
MFC;
大屏显示幕数字时钟;
C++。
Largescreendisplaydigitalclockdesign
Name:
ChenTanTutor:
JijieBi
Major:
ElectronicsandCommunicationsEngineeringGrade:
2013
Abstract
ThisdesignisbasedontheMFC,MFCisMicrosoftprovidesaclasslibrary,isakindofapplicationframework,alongwiththeMicrosoftVisualc++developmenttools,intheformofc++classencapsulatestheWindowsAPI,andcontainsanapplicationframework,inordertoreducetheworkloadapplicationdevelopers.HandletotheclasscontainsalargenumberofWindowswhichcontainswrapperclassandmanyWindowsbuilt-incontrolsandcomponentwrapperclass.
MFC:
MicrosoftFoundationClasses(MicrosoftFoundationClasses),withtheVCL,isakindofapplicationframework,alongwiththeMicrosoftVisualc++developmenttools.Currentlythelatestversionis10.0,andreleasetheChineseversion.Theclasslibraryprovidesasetofgenericreusableclasslibraryfordevelopers,mostoftheclassificationaredirectlyorindirectlyderivedfromCObject,onlyafewexceptions.
TheoverallstructureoftheMFCapplicationsusuallyderivedbythedeveloperfromMFCclassseveralclassesandclassaCWinAppobject(theapplicationobject).MFCprovidesaMFCAppWizardframeworkautomaticallygenerated.
Windowsapplication,MFCmasterincludefileforAfxwin.H.
AlsopartoftheMFCclassforMFC/ATLgeneral,canseparateintheWin32applicationcontainsandusetheseclasses.
Becauseofitseaseofuse,oftenmistakenforbeginnersvc++evelopmentmustuseMFC,thisideaiswrong.AsanApplicationFramework,theuseofMFCcanonlyimprovetheefficiencyofthedevelopmentofsomecases,onlyplayasupplementaryrole,anddoesnotreplacetheWin32programming.
Keywords:
Screendisplaydigitalclock;
C++.
第1章绪论
1.1MFC简介
MFC(MicrosoftFoundationClasses),是微软公是微软公司提供的一条类库司提供的一条类库(classlibraries),以C++类的形式封装了Windows的API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。
MFC提供了MFCAppWizard自动生成框架
Windows应用程序中,MFC的主包含文件为Afxwin.h
由于它的易用性,初学者常误认为VC++开发必须使用MFC,这种想法是错误的。
1.2立项意义
本设计难度不大,主要是培养对MFC基础的学习和认识,并培养动手能力以及独立思考能力。
1.3设计要求
1)对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;
可以加以其他功能或修饰,使程序更加完善、合理;
2)系统设计要实用,编程简练,可用,功能全面;
3)记录设计情况(备查,也为编写设计说明书作好准备);
4)要求采用模块化程序设计方法,要求上机调试通过和按设计报告格式。
第2章方法步骤
2.1总框架
图1.1系统总框架
首先获取系统当前时间,通过GetLocalTime(&
locTm)函数,之后分成三部分完成此设计。
第一部分是设置一个计时器,每隔一秒钟显示一次当前时间;
第二部分是改变系统背景画面;
第三部分是小闹钟的设计。
2.2时钟部分
2.2.1时钟流程图
否
是
图1.2时钟流程图
首先执行SetTimer(1,1000,NULL)函数,执行计数功能,SetTimer创建一个计时器,1:
代表计时器的名称,1000代表计时器的时间间隔,为1000ms=1s,NULL对应的函数是OnTimer。
OnTimer函数用来获取系统实现,并执行Format函数,对控件内的内容格式化。
执行SetDlgItemText函数,在其控件上显示时间字符串。
此时如果不点击退出,系统继续计时,若果点击退出,执行执行KillTimer函数,,删除计数器,结束系统。
2.2.2时钟相关函数
1)Ctime类Ctimet=Ctime:
:
GetCurrentTime();
//获取当前时间,并赋值给t。
2)Cstringstr;
//字符串类
3)Format("
xxxx"
);
//格式化
4)Ctime里有三个函数:
SetTimer(1,1000,NULL);
OnTimer();
KillTimer
(1)。
Ctrl+w调出classwizard(类引导)在Message(消息)中选择WM_Timer才能在工程里加入OnTimer();
函数;
这三个函数的作用分别是SetTimer创建一个计时器,1:
代表计时器的名称,1000代表计时器的时间间隔,为1000ms=1s,NULL对应的函数是OnTimer;
也就是说用SetTimer(1,1000,NULL)创建计时器后OnTimer函数每隔一秒就会执行一次;
KillTimer();
用来删除这个计时器,释放内存;
当然SetTimer(1,1000,NULL)的第一个参数1也可以改,相对应的在OnTimer函数中:
Ontimer(UINTnIDEvent)
{switch(nIDEvent)
{Case1:
.........;
break;
Case2:
....................break;
Case3:
.................break;
....................}}
5)还有几个函数SetDlgItemText(ID_NAME,str);
在名为ID_NAME的控件上显示字符串str。
6)再来说一下Format();
对时间t进行字符串可是转化有两种表示方法:
<
1>
CTimet=CTime:
CStringstr;
str.Format("
%02d:
%02d"
t.GetHour(),t.GetMinute(),t.GetSecond());
2>
str=t.Format("
%H:
%M:
%S"
若要显示年(%Y)月(%m)日(%d),则可表示为str=t.Format("
%Y-%m-%d%H:
%M:
%S"
)。
2.2.3时钟部分运行结果
此部分为时钟部分运行结果,还没有修改系统背景图画以及加入闹钟部分:
图3时钟部分运行结果
2.3修改背景画面
2.3.1相关函数
voidCMyDlg:
OnPaint()
{
if(IsIconic())
{
CPaintDCdc(this);
//devicecontextforpainting
SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0);
//设置背景
//Centericoninclientrectangle
intcxIcon=GetSystemMetrics(SM_CXICON);
intcyIcon=GetSystemMetrics(SM_CYICON);
CRectrect;
GetClientRect(&
rect);
intx=(rect.Width()-cxIcon+1)/2;
inty=(rect.Height()-cyIcon+1)/2;
//Drawtheicon
dc.DrawIcon(x,y,m_hIcon);
}
else
CDialog:
OnPaint();
}}
2.3.2修改画面运行结果
图4修改系统画面结果
2.4设置闹钟
2.4.1闹钟流程图
图5闹钟流程图
首先获取系统时间,在edit控件中输入闹钟时间以及要显示的文字,判断时间格式是否正确,如果不正确,显示“请输入正确时间!
”并且重新输入时间,如果正确,判断是否点击试听按钮,如果点击,则播放闹钟试音,否则点击设置闹钟。
此时印用SetTimer(1,1000,NULL)函数时间计数器,判断输入时间是否与系统时间一至,是则播放闹钟声音并显示文字,否则继续时间计数,知道与输入的时间一致。
2.4.2闹钟相关函数
三个编辑框添加三个成员m_hour,m_minutes,m_second
然后在classview选项卡下选择onpaint()添加一个计时器SetTimer(1,1000,NULL);
选择Ontimer()
添加代码//获取当前系统时间显示到静态文本框time上
CTimet=CTime:
%d时%d分%d秒"
SetDlgItemText(time,str);
//判断当前时间与设定时间是否一致
if(s==str)
PlaySound("
ring\\1134.wav"
NULL,SND_FILENAME|SND_ASYNC);
MessageBox(NULL,"
TIMEsUP!
"
MB_OK);
}
双击设闹钟按钮添加如下代码,将输入的时间与系统时间比对,相同触发提醒事件:
CStringh,m,c;
m_hour.GetWindowText(h);
m_minutes.GetWindowText(m);
m_second.GetWindowText(c);
s=h+"
时"
+m+"
分"
+c+"
秒"
;
MessageBox(s,"
设定成功"
由于程序用到了playsound函数,在代码开始的地方添加#include<
mmsystem.h>
。
2.4.3闹钟运行结果
图6闹钟运行结果
第3章总结
通过对大屏幕数字显示时钟的设计,我对MFC有了初步的了解,相信对将来有很大的帮助。
同时,我也巩固了独立思考的能力。
当然,大屏幕数字时钟的设计只是简单的设计,我同过本次设计学到的东西也有限,我会同过自己的不断努力,完善这方面的知识。
参考文献