




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
电子闹钟设计说明书一、实现的功能一个简单的电子闹钟设计程序,和一般的闹钟的功能差不多。首先此程序能够同步电脑上的显示时间,保证时间的准确性;24小时制,可以根据自己喜欢的铃声设置闹钟提示音,还能自己设置提示语句,如“时间到了该起床了”,“大懒虫,天亮了,该起床了”等等,所以这是一个集实用和趣味于一体的小程序。二、设计步骤1、打开Microsoft Visual C+ 6.0,在文件中点击新建,在弹出框内选择MFC AppWizardexe工程,输入工程名张卢锐的闹钟及其所在位置,点击确定,如图所示。2、将弹出MFC AppWizard-step 1对话框,选择基本对话框,点击完成,如图所示。然后一直点下一步,最后点完成,就建立了一个基于对话窗口的程序框架,如图所示。3、下面是计算器的界面设计在控件的“编辑框”按钮上单击鼠标左键,在对话框编辑窗口上合适的位置按下鼠标左键并拖动鼠标画出一个大小合适的编辑框。在编辑框上单击鼠标右键,在弹出的快捷莱单中选择属性选项,此时弹出Edit属性对话框,以显示小时的窗口为例,如图所示,在该对话框中输入ID属性。 在控件的“Button”按钮上单击鼠标左键,在对话框上的合适的位置上按下鼠标左键并拖动鼠标画出一个大小合适的下压式按钮。在按钮上单击鼠标右键,在弹出的快捷菜单中选择属性选项,此时也弹出Push Button属性对话框,以数字按钮打开为例,如图所示,在该对话框中输入控件的ID值和标题属性。按照上面的操作过程编辑其他按钮对象的属性。表1 各按钮和编辑框等对象的属性对象ID标题或说明编辑框IDC_HOUR输入定时的整点时间编辑框IDC_MINUTE输入定时的分钟数编辑框IDC_FILE链接提示应所在地址编辑框IDC_WARING自己编辑显示文本按钮IDC_OPEN打开按钮IDC_IDOK闹钟开始按钮IDC_CHANGE重新输入静态文本IDC_STATIC界面上的静态文本,如时,分,备注完成后界面如图所示。4、连接变量和代码1)、 给编辑框连接变量。在编辑框上单击鼠标右键,在弹出菜单中选择ClassWizard菜单项,弹出MFC ClassWizard对话框,选择Member Variables选项卡,如图所示。2)、给按钮连接代码(以打开按键为例) 给打开按钮连接代码。在打开按钮上单击鼠标右键,选择ClassWizard菜单项,在弹出的对话框中选择Messages Maps选项卡,然后在Object IDs列表框中选择IDC_HOUR,在Messages列表框中选择BN_CLICKED项,即选择单击按钮事件,如图所示。三、关键部分的代码1、获取电脑时间和输入定时时间代码:if(onoff=TRUE)CTime time;CString strtime,m_stime;time=CTime:GetCurrentTime();strtime=time.Format(%H%M);/获取电脑时间m_stime=m_hour+m_minute;/自己输入时间if(m_stime=strtime)onoff=FALSE;OnOpenMusic();OnTingle();MessageBox(m_waring);2、打开提示音音乐文件代码:void CAlarmclockDlg:OnOpenMusic()/SHELLEXECUTEINFO shell = sizeof(shell) ; shell.fMask = SEE_MASK_FLAG_DDEWAIT; shell.lpVerb = open; shell.lpFile = m_file; shell.nShow = SW_SHOWNORMAL; BOOL ret = ShellExecuteEx(&shell);/打开音乐文件 3、 到达设定时间点闹钟提醒程序:void CAlarmclockDlg:OnTray()NOTIFYICONDATA nid; nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA); nid.hWnd=this-m_hWnd; nid.uID=IDR_MAINFRAME; nid.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP ; nid.uCallbackMessage=WM_SHOWTASK;/自定义的消息名称 nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME); strcpy(nid.szTip,闹钟提醒);/信息提示条为“计划任务提醒” Shell_NotifyIcon(NIM_ADD,&nid);/在托盘区添加图标 4、 计划任务提醒代码:void CAlarmclockDlg:OnTray()NOTIFYICONDATA nid; nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA); nid.hWnd=this-m_hWnd; nid.uID=IDR_MAINFRAME; nid.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP ; nid.uCallbackMessage=WM_SHOWTASK;/自定义的消息名称 nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME); strcpy(nid.szTip,闹钟提醒);/信息提示条为“计划任务提醒” Shell_NotifyIcon(NIM_ADD,&nid);/在托盘区添加图标5、 抖动完成以后回到起始位置放置乱跑和抖动圈数代码:void CAlarmclockDlg:OnTingle()ShowWindow(SW_SHOWNORMAL);CPoint CurrentPos; /抖完还要回到这个位置,不要乱跑。 CRect rect; /这一段计算主要是为了满足SetWindowPos()的参数要求不解释吧 GetClientRect(&rect); ClientToScreen(&rect); CurrentPos.x = rect.left;CurrentPos.y = rect.top; int FrameWidth; int FrameHight; int CaptionHight; /我当前系统设置上这三个值分别为3,3,22 FrameWidth = GetSystemMetrics(SM_CXFIXEDFRAME); FrameHight = GetSystemMetrics(SM_CYFIXEDFRAME); CaptionHight = GetSystemMetrics(SM_CYCAPTION); /这是个好函数 /这里需要将CurrentPos坐标offset()到主窗口左上角坐标 CurrentPos.Offset(-FrameWidth, -CaptionHight-FrameHight); /实现抖动: 半个小圈 + 三个大圈 + 半个小圈 SetWindowPos(&wndTopMost,CurrentPos.x-1,CurrentPos.y-2,0,0, SWP_NOSIZE); Sleep(10);/上面的SWP_NOSIZE参数忽略cx,cy,故可置0 SetWindowPos(&wndTopMost,CurrentPos.x-4,CurrentPos.y-4,0,0, SWP_NOSIZE); Sleep(10); SetWindowPos(&wndTopMost,CurrentPos.x-7,CurrentPos.y-2,0,0, SWP_NOSIZE); Sleep(10); SetWindowPos(&wndTopMost,CurrentPos.x-8,CurrentPos.y,0,0, SWP_NOSIZE); Sleep(10); int i = 0;for (;i7;i+) /想抖几圈就改几 SetWindowPos(&wndTopMost,CurrentPos.x-6,CurrentPos.y+6,0,0, SWP_NOSIZE); Sleep(10); SetWindowPos(&wndTopMost,CurrentPos.x,CurrentPos.y+8,0,0, SWP_NOSIZE); Sleep(10); SetWindowPos(&wndTopMost,CurrentPos.x+6,CurrentPos.y+6,0,0, SWP_NOSIZE); Sleep(10); SetWindowPos(&wndTopMost,CurrentPos.x+8,CurrentPos.y,0,0, SWP_NOSIZE); Sleep(10); SetWindowPos(&wndTopMost,CurrentPos.x+6,CurrentPos.y-6,0,0, SWP_NOSIZE); Sleep(10); SetWindowPos(&wndTopMost,CurrentPos.x,CurrentPos.y-8,0,0, SWP_NOSIZE); Sleep(10); SetWindowPos(&wndTopMost,CurrentPos.x-6,CurrentPos.y-6,0,0, SWP_NOSIZE); Sleep(10); SetWindowPos(&wndTopMost,CurrentPos.x-8,CurrentPos.y,0,0, SWP_NOSIZE); Sleep(10); SetWindowPos(&wndTopMost,CurrentPos.x-7,CurrentPos.y+2,0,0, SWP_NOSIZE); Sleep(10); SetWindowPos(&wndTopMost,CurrentPos.x-4,CurrentPos.y+4,0,0, SWP_NOSIZE); Sleep(10); SetWindo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新能源电池隔板加工制造项目施工方案
- 土石方工程设备使用与管理方案
- 超高纯电子级气体生产建设项目建设工程方案
- xx市城乡供水安全保障一体化项目技术方案
- 冷冻法施工组织设计
- 中心城区地下管网改造项目节能评估报告
- 2025年新生入学考核题库及答案
- 老旧供水管网改造工程节能评估报告
- 跨区域口腔医院医生聘用及人才培养协议
- 离婚二次起诉书:共同债务清偿与财产分割协议
- 家庭食品安全常识教育
- 管井井点降水记录
- 污水钢筋混凝土管施工方案
- 腰椎结核的围手术期护理查房ppt培训课件
- 中医学基础理论-经络学说
- 茶学概论-第一章-茶的起源与传播(2学时)课件
- 网络空间安全导论-西北工业大学中国大学mooc课后章节答案期末考试题库2023年
- 【直播带货的模式研究国内外文献综述4300字(论文)】
- 屋面防水维修工程施工方案
- 破产管理人考试题库及答案
- 2023陕西延长石油集团矿业公司所属单位招聘666人笔试备考题库及答案解析
评论
0/150
提交评论