C电子闹钟设计项目说明指导书_第1页
C电子闹钟设计项目说明指导书_第2页
C电子闹钟设计项目说明指导书_第3页
C电子闹钟设计项目说明指导书_第4页
C电子闹钟设计项目说明指导书_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

电子闹钟设计说明书一、实现功效一个简单电子闹钟设计程序,和通常闹钟功效差不多。首先此程序能够同时电脑上显示时间,确保时间正确性;二十四小时制,能够依据自己喜爱铃声设置闹钟提醒音,还能自己设置提醒语句,如“时间到了该起床了”,“大懒虫,天亮了,该起床了”等等,所以这是一个集实用和趣味于一体小程序。二、设计步骤1、打开MicrosoftVisualC++6.0,在文件中点击新建,在弹出框内选择MFCAppWizard[exe]工程,输入工程名张卢锐闹钟及其所在位置,点击确定,图所表示。2、将弹出MFCAppWizard-step1对话框,选择基础对话框,点击完成,图所表示。然后一直点下一步,最终点完成,就建立了一个基于对话窗口程序框架,图所表示。3、下面是计算器界面设计在控件“编辑框”按钮上单击鼠标左键,在对话框编辑窗口上适宜位置按下鼠标左键并拖动鼠标画出一个大小适宜编辑框。在编辑框上单击鼠标右键,在弹出快捷莱单中选择属性选项,此时弹出Edit属性对话框,以显示小时窗口为例,图所表示,在该对话框中输入ID属性。在控件“Button”按钮上单击鼠标左键,在对话框上适宜位置上按下鼠标左键并拖动鼠标画出一个大小适宜下压式按钮。在按钮上单击鼠标右键,在弹出快捷菜单中选择属性选项,此时也弹出PushButton属性对话框,以数字按钮打开为例,图所表示,在该对话框中输入控件ID值和标题属性。根据上面操作过程编辑其它按钮对象属性。表1各按钮和编辑框等对象属性对象ID标题或说明编辑框IDC_HOUR输入定时整点时间编辑框IDC_MINUTE输入定时分钟数编辑框IDC_FILE链接提醒应所在地址编辑框IDC_WARING自己编辑显示文本按钮IDC_OPEN打开按钮IDC_IDOK闹钟开始按钮IDC_CHANGE重新输入静态文本IDC_STATIC界面上静态文本,如时,分,备注完成后界面图所表示。4、连接变量和代码1)、给编辑框连接变量。在编辑框上单击鼠标右键,在弹出菜单中选择ClassWizard菜单项,弹出MFCClassWizard对话框,选择MemberVariables选项卡,图所表示。2)、给按钮连接代码(以打开按键为例)给打开按钮连接代码。在打开按钮上单击鼠标右键,选择ClassWizard菜单项,在弹出对话框中选择MessagesMaps选项卡,然后在ObjectIDs列表框中选择IDC_HOUR,在Messages列表框中选择BN_CLICKED项,即选择单击按钮事件,图所表示。三、关键部分代码1、获取电脑时间和输入定时时间代码: if(onoff==TRUE) { CTimetime; CStringstrtime,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、打开提醒音音乐文件代码:voidCAlarmclockDlg::OnOpenMusic(){ // SHELLEXECUTEINFOshell={sizeof(shell)};shell.fMask=SEE_MASK_FLAG_DDEWAIT;shell.lpVerb="open";shell.lpFile=m_file;shell.nShow=SW_SHOWNORMAL;BOOLret=ShellExecuteEx(&shell); //打开音乐文件 }3、抵达设定时间点闹钟提醒程序:voidCAlarmclockDlg::OnTray(){ NOTIFYICONDATAnid; 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);//在托盘区添加图标 计划任务提醒代码:voidCAlarmclockDlg::OnTray(){ NOTIFYICONDATAnid; 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、抖动完成以后回到起始位置放置乱跑和抖动圈数代码:voidCAlarmclockDlg::OnTingle(){ ShowWindow(SW_SHOWNORMAL); CPointCurrentPos;//抖完还要回到这个位置,不要乱跑。 CRectrect;//这一段计算关键是为了满足SetWindowPos()参数要求…不解释吧 GetClientRect(&rect); ClientToScreen(&rect); CurrentPos.x=rect.left; CurrentPos.y=rect.top; intFrameWidth; intFrameHight; intCaptionHight;//我目前系统设置上这三个值分别为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); inti=0; for(;i<7;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(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论