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

提交評論