1、 VC+课程设计课程设计实验报告实验报告 题目:基于 MFC 的模拟时钟 课程设计实验报告课程设计实验报告 1、题目:题目:基于基于 MFC 的模拟时钟的模拟时钟 2、编程要点编程要点: 制 作 时 钟 的 过程 中 , 首 先给 时 钟 创建 一 个 基类制 作 时 钟 的 过程 中 , 首 先给 时 钟 创建 一 个 基类 CClockElement,还 需 要 派 生 类还 需 要 派 生 类 CClockBackground,CClockHourHand,CClockMinHand,CClockSecHand 分别控制时钟的背景,时分别控制时钟的背景,时 钟的时针,分针,秒针。钟的时针
2、,分针,秒针。 3、实现过程:实现过程: (1) 工程、风格、控件与变量表工程、风格、控件与变量表 本时钟是基本对话框的时钟,界面简约,便于使用。本时钟是基本对话框的时钟,界面简约,便于使用。 控件控件 控件名控件名 控件类型控件类型 Clock 静态文本静态文本 变量表变量表 变量名变量名 类型类型 m_crMain COLORREF m_crOther COLORREF m_tmCur CTime m_rcRegion CRect m_nRadius int m_clockBK CClockBackground m_clockHour CClockHourHand m_clockMin C
3、ClockMinHand m_clockSec CClockSecHand m_rcClient CRect m_Clock CClockEX (2) 主要功能程序代码主要功能程序代码 CClockBackground:CClockBackground() /为时钟背景定义默认的颜色设置为时钟背景定义默认的颜色设置 m_crMain=RGB(0,0,255); m_crOther=RGB(0,255,0); void CClockBackground:Draw(CDC *pDC) /设置准备环境设置准备环境 CPen penMain(PS_SOLID,1,m_crMain),penOther(
4、PS_SOLID,1,m_crOther); CBrush brMain(m_crMain),brOther(m_crOther); CPen *pOldPen=pDC-SelectObject( CBrush *pOldBrush=pDC-SelectObject( CPoint ptCenter=m_rcRegion.CenterPoint(); int nRadius=m_nRadius-8; for(int i=0;iEllipse(rcDot); /绘制绘制 12 个小方框个小方框,表示表示 12 个正点个正点 pDC-SelectObject( pOldBrush=pDC-Sele
5、ctObject( for(i=0;iRectangle(rcDot); /huanyuan 设备环境设备环境 pDC-SelectObject(pOldPen); pDC-SelectObject(pOldBrush); CClockHourHand:CClockHourHand() /定义默认颜色定义默认颜色 m_crMain=RGB(0,0,128); m_crOther=RGB(128,128,0); void CClockHourHand:Draw(CDC *pDC) /设置准备环境设置准备环境 CPen penMain(PS_SOLID,1,m_crMain),penOther(P
6、S_SOLID,1,m_crOther); CBrush brMain(m_crMain),brOther(m_crOther); CPen *pOldPen=pDC-SelectObject( CBrush *pOldBrush=pDC-SelectObject( /确定当前指针的弧度确定当前指针的弧度 int nTime=(m_tmCur.GetHour()%12)*3600; nTime+=m_tmCur.GetMinute()*60; nTime+=m_tmCur.GetSecond(); double fRadian=2*PI*nTime/3600/12; /确定绘制菱形指针所需的四个角的坐标确定绘制菱形指针所需的四个角的坐标 CPoint ptDiamond4; for(int i=0;iPolygon(ptDiamond,4); /huanyuan 设备环境设备环境 pDC-SelectObject(pOldPen); pDC-SelectObject(pOldBrush); CClo