您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 小闹钟程序课题设计报告
小闹钟VC程序设计报告一课题内容和要求【问题描述】编一个小闹钟程序,运行后可以在指定的时间到时,在屏幕上显示提醒时间到的语句,并使得电脑发出了悠扬的乐声。二需求分析1显示时间功能,即时显示当前时间2闹钟功能,能够根据用户设置的时间来提醒用户,可以通过声音或者文字提醒3时间设置功能,提供菜单设置时钟的当前时间和提醒的闹钟时间4界面设计,可模拟真实钟表界面,也可用数字界面显示,要求美观,实用和个性化三详细设计该程序拥有四个源文件,分别为AlarmClock.cppAlarmClockDlg.cppRingDlg.cppstdafx.cpp如下图所示:其作用分别为AlarmClock.cpp:定义应用程序的类行为AlarmClockDlg.cpp:实现文件RingDlg.cpp:实现文件另外stdafx.cpp:只包括标准包含文件的源文件AlarmClock.pch将作为预编译头stdafx.obj将包含预编译类型信息在闹钟设置面板上添加当前时间,通过文本框和标签设置需要设置的闹钟的时,分,秒。设置列表框提供闹钟的音乐供以选择。设置开关按钮决定闹钟的开始和结束另外于MFC播放背景音乐的问题解决如下:1.建立一个MFC的程序2.插入资源(插入-资源-定制-(输入WAVA))3.在resources中找到WAVA文件,打开有个IDR_WAVA14.右键-import-浏览后缀名为.wav的音频文件5.在CMainFrame中的OnCreate函数中加入语句PlaySound(MAKEINTRESOURCE(IDR_WAVE2),AfxGetResourceHandle(),SND_ASYNC|SND_RESOURCE|SND_NODEFAULT|SND_LOOP);6.在该文件的上方,添加头文件#includemmsystem.h7.(工程-设置-连接-库模板添加winmm.lib)8.编译运行即可程序源代码#includestdafx.h#includeAlarmClock.h#includeAlarmClockDlg.h#includeafxdialogex.h#includeRingDlg.h#includeMMSystem.h#ifdef_DEBUG#definenewDEBUG_NEW#endif//CAlarmClockDlg对话框CAlarmClockDlg::CAlarmClockDlg(CWnd*pParent/*=NULL*/):CDialogEx(CAlarmClockDlg::IDD,pParent),m_hour(0),m_minute(0),m_second(0),m_prompt(_T(时间到,闹钟响!)){//载入图标m_hIcon=AfxGetApp()-LoadIcon(IDR_MAINFRAME);//默认响铃时长60秒iLast=60;//试听状态标识为FALSEisListening=FALSE;//响铃状态标识为FALSE//isRinging=FALSE;//用不到}voidCAlarmClockDlg::DoDataExchange(CDataExchange*pDX){CDialogEx::DoDataExchange(pDX);DDX_Control(pDX,IDC_STATIC_NOW,m_static_now);DDX_Control(pDX,IDC_STATIC_LEFT,m_static_left);DDX_Text(pDX,IDC_EDIT_H,m_hour);DDV_MinMaxUInt(pDX,m_hour,0,23);DDX_Text(pDX,IDC_EDIT_M,m_minute);DDV_MinMaxUInt(pDX,m_minute,0,59);DDX_Text(pDX,IDC_EDIT_S,m_second);DDV_MinMaxUInt(pDX,m_second,0,59);DDX_Control(pDX,IDC_SPIN_H,m_spin_h);DDX_Control(pDX,IDC_SPIN_M,m_spin_m);DDX_Control(pDX,IDC_SPIN_S,m_spin_s);DDX_Text(pDX,IDC_EDIT_PROMPT,m_prompt);DDV_MaxChars(pDX,m_prompt,18);DDX_Control(pDX,IDC_COMBO_RING,m_combo_ring);}BEGIN_MESSAGE_MAP(CAlarmClockDlg,CDialogEx)ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_WM_CTLCOLOR()ON_WM_TIMER()ON_NOTIFY(NM_CLICK,IDC_SYSLINK1,&CAlarmClockDlg::OnNMClickSyslink1)ON_BN_CLICKED(IDC_BUTTON_RESET,&CAlarmClockDlg::OnBnClickedButtonReset)ON_EN_CHANGE(IDC_EDIT_H,&CAlarmClockDlg::SetAlarmTime)ON_EN_CHANGE(IDC_EDIT_M,&CAlarmClockDlg::SetAlarmTime)ON_EN_CHANGE(IDC_EDIT_S,&CAlarmClockDlg::SetAlarmTime)ON_BN_CLICKED(IDC_BUTTON_LISTEN,&CAlarmClockDlg::OnBnClickedButtonListen)ON_CBN_SELCHANGE(IDC_COMBO_RING,&CAlarmClockDlg::OnCbnSelchangeComboRing)ON_MESSAGE(WM_NC,&CAlarmClockDlg::OnNotifyIcon)ON_WM_SYSCOMMAND()ON_WM_CLOSE()//ON_WM_DESTROY()END_MESSAGE_MAP()//CAlarmClockDlg消息处理程序BOOLCAlarmClockDlg::OnInitDialog(){CDialogEx::OnInitDialog();//设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动//执行此操作SetIcon(m_hIcon,TRUE);//设置大图标SetIcon(m_hIcon,FALSE);//设置小图标//TODO:在此添加额外的初始化代码//获得当前系统时间timeNow=CTime::GetCurrentTime();m_static_now.SetWindowTextW(timeNow.Format(_T(%H:%M:%S)));//设置默认闹钟时间timeAlarm=timeNow;m_static_left.SetWindowTextW(_T(00:00:00));m_hour=timeAlarm.GetHour();m_minute=timeAlarm.GetMinute();m_second=timeAlarm.GetSecond();m_spin_h.SetBuddy(GetDlgItem(IDC_EDIT_H));m_spin_h.SetRange(0,23);//m_spin_h.SetPos(m_hour);m_spin_m.SetBuddy(GetDlgItem(IDC_EDIT_M));m_spin_m.SetRange(0,59);//m_spin_m.SetPos(m_minute);m_spin_s.SetBuddy(GetDlgItem(IDC_EDIT_S));m_spin_s.SetRange(0,59);//m_spin_s.SetPos(m_second);//试听铃声选第1组m_combo_ring.SetCurSel(0);//声音资源选第1组pszSound=MAKEINTRESOURCE(IDR_WAVE0);//设置字体LOGFONTlogFont;fontBig=newCFont;GetDlgItem(IDC_STATIC_LEFT)-GetFont()-GetLogFont(&logFont);logFont.lfHeight*=1.5;logFont.lfWidth*=1.5;logFont.lfWeight=FW_BOLD;fontBig-CreateFontIndirectW(&logFont);GetDlgItem(IDC_STATIC_LEFT)-SetFont(fontBig,FALSE);GetDlgItem(IDC_STATIC_BIG)-SetFont(fontBig,FALSE);fontSmall=newCFont;GetDlgItem(IDC_STATIC_INFO)-GetFont()-GetLogFont(&logFont);logFont.lfHeight*=0.9;logFont.lfWidth*=0.9;fontSmall-CreateFontIndirectW(&logFont);GetDlgItem(IDC_STATIC_INFO)-SetFont(fontSmall,FALSE);GetDlgItem(IDC_SYSLINK1)-SetFont(fontSmall,FALSE);//设置托盘NotifyIcon.hWnd=GetSafeHwnd();NotifyIcon.cbSize=sizeof(NOTIFYICONDATA);NotifyIcon.hIcon=AfxGetApp()-LoadIcon(IDR_MAINFRAME);lstrcpy(NotifyIcon.szTip,_T(小小闹钟));NotifyIcon.uCallbackMessage=WM_NC;NotifyIcon.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP;Shell_NotifyIcon(NIM_ADD,&NotifyIcon);//刷新显示UpdateData(FALSE);//开启计时器,以1000ms为时间间隔SetTimer(1,1000,NULL);returnTRUE;//除非将焦点设置到控件,否则返回TRUE}voidCAlarmClockDlg::OnPaint(){if(IsIconic()){CPaintDCdc(this);//用于绘制的设备上下文SendMessage(WM_ICONERASEBKGND,reinterpret_castWPARAM(dc.GetSafeHdc()),0);//使图标在工作区矩形中居中intcxIcon=GetSystemMetrics(SM_CXICON);intcyIcon=GetSystemMetrics(SM_CYICON);CRectrect;GetClientRect(&rect);intx=(rect.Width()-cxIcon+1)/2;inty=(rect.Height()-cyIcon+1)/2;//绘制图标dc.DrawIcon(x,y,m_hIcon);}else{CDialogEx::OnPaint();}}//当用户拖动最小化窗口时系统调用此函数取得光标显示HCURSORCAlarmClockDlg::OnQueryDragIcon(){returnstatic_castHCURSOR(m_hIcon);}HBRUSHCAlarmClockDlg::OnCtlColor(CDC*pDC,CWnd*pWnd,UINTnCtlColor){HBRUSHhbr=CDialogEx::OnCtlColor(pDC,pWnd,nCtlColor);//TODO:在此更改DC的任何特性switch(pWnd-GetDlgCtrlID()){ca
本文标题:小闹钟程序课题设计报告
链接地址:https://www.777doc.com/doc-5694720 .html