《C++ MFC 做个时钟显示软件.docx》由会员分享,可在线阅读,更多相关《C++ MFC 做个时钟显示软件.docx(4页珍藏版)》请在三一办公上搜索。
1、C+ MFC 做个时钟显示软件现在以最短的时间带领大家进行一个C+ MFC做的时钟软件,下面分几步叙述,相信大家看完本期实验,自己也能独立做个这样的软件 第一启动Visual C+ 6.0,创建一个单文档应用程序,工程名为Clock 。 第二 打开ClassWizard对话框为CClockView类添加WM_TIMER和WM_CREAT消息函数 代码如下。void CClockView:OnTimer(UINT nIDEvent) int CClockView:OnCreate(LPCREATESTRUCT lpCreateStruct) 我们现在分别添加,截图如下 if (CView:OnC
2、reate(lpCreateStruct) = -1) return -1; / TODO: Add your message handler code here and/or call default InvalidateRect(NULL,true); UpdateWindow; CView:OnTimer(nIDEvent); / TODO: Add your specialized creation code here SetTimer(1,1000,NULL); return 0; 第三打开ClockView.cpp文件添加头文件,调用数学函数库。在其他函数中添加代码。 #inclu
3、de math.h截图如下 第四在其他函数中添加代码。代码如下 void CClockView:OnDraw(CDC* pDC) CClockDoc* pDoc = GetDocument; ASSERT_VALID(pDoc); / TODO: add draw code for native data here /获取客户区大小 RECT Rect问1; GetClientRect(&Rect); /计算椭圆中心位置 int CenterX = Rect.right/2; int CenterY = Rect.bottom/2; /区域最右边的一半 /区域最下边的一半 CTime Time
4、问2= CTime:GetCurrentTime; /取当前时间 CString str; int i,x,y; CSize size问3; /创建一支黑色的笔 CPen Pen(PS_SOLID,5,RGB(0,0,0); /选进设备表,保存原笔 CPen *OldPen = pDC-SelectObject(&Pen); /绘制钟面椭圆 pDC-Ellipse(5,5,Rect.right-5,Rect.bottom-5); double Radians; /设置字体颜色为红色 pDC-SetTextColor(RGB(255,0,0); for(i = 1;i GetTextExtent
5、问4 (str,str.GetLength); /计算时间点放置的位置 Radians = (double)i*6.28/12.0; x=CenterX-(size.cx/2)+(int)(double)(CenterX-0)*sin(Radians); y=CenterY-(size.cy/2)-(int)(double)(CenterY-20)*cos(Radians); /绘制12个时间点 pDC-TextOut(x,y,str); /计算时钟指针的夹角 Radians = (double)Time.GetHour + (double)Time.GetMinute/60.0 + (dou
6、ble)Time.GetSecond/3600.0; Radians *= 6.28/12.0; /创建时钟指针画笔 CPen HourPen(PS_SOLID,5,RGB(0,255,0); pDC-SelectObject(&HourPen); /绘制时钟指针线 pDC-MoveTo(CenterX,CenterY); pDC-LineTo(CenterX + (int)(double)(CenterX/3)*sin(Radians), CenterY - (int)(double)(CenterY/3)*cos(Radians); Radians = (double)Time.GetMi
7、nute+(double)Time.GetSecond/60.0; Radians *= 6.28/60.0; /创建分钟指针画笔 CPen MinutePen(PS_SOLID,3,RGB(0,0,255); pDC-SelectObject(&MinutePen); /绘制分钟指针线 pDC-MoveTo(CenterX,CenterY); pDC-LineTo(CenterX + (int)(double)(CenterX*2)/3)*sin(Radians), CenterY - (int)(double)(CenterY*2/3)*cos(Radians); Radians = (d
8、ouble)Time.GetSecond; Radians *= 6.28/60.0; /创建秒钟指针画笔 CPen SecondPen(PS_SOLID,1,RGB(255,0,255); pDC-SelectObject(&SecondPen); /绘制秒钟指针线 pDC-MoveTo(CenterX,CenterY); pDC-LineTo(CenterX + (int)(double)(CenterX*4)/5)*sin(Radians), CenterY - (int)(double)(CenterY*4)/5*cos(Radians); pDC-SelectObject(OldPen); 第五 编译运行截图如下 第六 在此总结一下 C+并不可怕,只要我们有信心,一定能BEAT it 我们一定能胜利学会C+