C++指針型鬧鐘課程設(shè)計(jì)_第1頁
C++指針型鬧鐘課程設(shè)計(jì)_第2頁
C++指針型鬧鐘課程設(shè)計(jì)_第3頁
C++指針型鬧鐘課程設(shè)計(jì)_第4頁
C++指針型鬧鐘課程設(shè)計(jì)_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、課 程 設(shè) 計(jì) 說 明 書題 目:指針型鬧鐘學(xué)院名稱: 專業(yè)班級(jí):姓名學(xué)號(hào): 指導(dǎo)教師:2013 年 07 月課程設(shè)計(jì)任務(wù)書專業(yè)班級(jí): 學(xué)生姓名: 指導(dǎo)教師:一、 課程設(shè)計(jì)題目:設(shè)計(jì)一個(gè)如圖所示的指針式鬧鐘二、目的與要求:1、目的:(1)要求學(xué)生熟練掌握C+語言的基本知識(shí)和C+調(diào)試技能;(2)掌握用C+開發(fā)應(yīng)用程序的一般步驟和方法;(3)能夠利用所學(xué)的基本知識(shí)和技能,解決簡(jiǎn)單的面向?qū)ο蟮某绦蛟O(shè)計(jì)問題。(4)培養(yǎng)學(xué)生綜合利用C語言進(jìn)行程序設(shè)計(jì)的能力,主要是培養(yǎng)學(xué)生利用系統(tǒng)提供的標(biāo)準(zhǔn)圖形函數(shù)進(jìn)行創(chuàng)新設(shè)計(jì)。2、基本要求:(1)要求利用面向?qū)ο蟮姆椒ㄒ约癈+的編程思想來完成系統(tǒng)的設(shè)計(jì);(2)要求在設(shè)計(jì)

2、的過程中,對(duì)Windows環(huán)境下的編程有一個(gè)基本的認(rèn)識(shí);(3)學(xué)會(huì)Windows環(huán)境下繪圖的基本方法;(4)能夠完成基本的鐘表的走時(shí)功能、對(duì)表功能、定時(shí)功能;(5)界面美觀大方。3、創(chuàng)新要求:在基本要求達(dá)到后,可進(jìn)行創(chuàng)新設(shè)計(jì),如定時(shí)提醒功能、聲音提醒功能、定時(shí)運(yùn)行別的程序的功能等。4、寫出設(shè)計(jì)說明書按照設(shè)計(jì)過程寫出設(shè)計(jì)說明書。三、設(shè)計(jì)方法和基本原理:1、問題描述(功能要求):要求所編寫的鬧鐘能夠完成基本的走時(shí)、對(duì)時(shí)、定時(shí)功能。2、問題的解決方案(參考):根據(jù)題目的要求,可以將問題解決分為以下步驟:(1)分析問題,畫出要解決問題的流程圖(類及其層次結(jié)構(gòu)圖);(2)利用對(duì)話框編輯器完成界面的設(shè)計(jì),

3、要求界面要美觀實(shí)用;(3)添加成員變量和成員函數(shù)(消息映射函數(shù));(4)利用結(jié)構(gòu)化程序的設(shè)計(jì)思路完成秒針、分針、時(shí)針的走動(dòng)及鬧鈴指針的設(shè)置。(5)程序功能調(diào)試;(6)完成系統(tǒng)總結(jié)報(bào)告以及系統(tǒng)使用說明書。四、設(shè)計(jì)中涉及到的重要內(nèi)容及關(guān)鍵技術(shù):1、對(duì)話框應(yīng)用程序的編寫方法及其相關(guān)函數(shù);2、繪圖工具的使用方法;3、一些常用系統(tǒng)API函數(shù)的使用方法。五、程序設(shè)計(jì)和調(diào)試:編寫程序代碼、完成程序調(diào)試。六、編寫課程設(shè)計(jì)說明書:按照課程設(shè)計(jì)說明書的規(guī)范格式要求以及說明書中的內(nèi)容要求編寫課程設(shè)計(jì)說明書。七、答辯與評(píng)分標(biāo)準(zhǔn):1、完成基本功能:40分;2、設(shè)計(jì)報(bào)告及使用說明書:30分;3、設(shè)置錯(cuò)誤或者按照要求改變結(jié)

4、果:15分;4、回答問題:15分。摘要 此課程設(shè)計(jì)的目的是為了達(dá)到熟練掌握C+語言的基本知識(shí)和C+調(diào)試技能;基本掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的基本思路和方法;能夠利用所學(xué)的基本知識(shí)和技能,解決簡(jiǎn)單的面向?qū)ο蟪绦蛟O(shè)計(jì)問題;培養(yǎng)綜合利用C語言進(jìn)行程序設(shè)計(jì)的能力。需要設(shè)計(jì)的模擬時(shí)鐘程序是基于MFC的WINDOWS應(yīng)用程序設(shè)計(jì),程序運(yùn)行成功后,頁面出現(xiàn)了一個(gè)指針式的時(shí)鐘和數(shù)字式的時(shí)鐘,指針式的時(shí)鐘表盤為圓形,并且圓周上有分布均勻的12個(gè)刻度,刻度要求顯示清晰,圓形的鐘面上有長(zhǎng)度和顏色及粗細(xì)各不相同的指針,即時(shí)針、分針、秒針,以便各個(gè)指針重合時(shí)亦可以輕易辨認(rèn),指針的運(yùn)動(dòng)要求具有規(guī)律性,且為順時(shí)針,指針式的時(shí)鐘表

5、盤下面則是一個(gè)以數(shù)字形式顯示時(shí)間的數(shù)字鐘,數(shù)字鐘的鐘面為一個(gè)規(guī)則的矩形,其顯示時(shí)間的格式是時(shí):分:秒,小時(shí)為12進(jìn)制,分鐘和秒是60進(jìn)制,指針式的時(shí)鐘和數(shù)字式的時(shí)鐘顯示的時(shí)間同步,且兩個(gè)時(shí)鐘所顯示的時(shí)間與計(jì)算機(jī)的系統(tǒng)時(shí)間相一致,頁面的菜單項(xiàng)設(shè)有時(shí)間設(shè)置的欄目,可以對(duì)所顯示的時(shí)間進(jìn)行調(diào)整,能進(jìn)行調(diào)整的具體內(nèi)容是年、月、日、時(shí)、分、秒。此模擬時(shí)鐘外觀簡(jiǎn)潔,功能和實(shí)際運(yùn)用到的時(shí)鐘基本一樣,用起來非常方便。關(guān)鍵詞:指針式;鬧鐘;系統(tǒng)時(shí)間 AbstractThis course is designed for the purpose to achieve proficiency in C + + lan

6、guage basics and C + + debugging skills; basic grasp of object-oriented programming of the basic ideas and methods; able to use what they have learned the basic knowledge and skills to solve simple object-oriented program design issues ; develop comprehensive utilization C + + language programming c

7、apabilities. Need to design analog clock program is based on the MFC WINDOWS application design, the program runs successfully, the page there is a pointer clock and digital clock Analog clock dial is circular and is distributed uniformly on the circumference 12 scale, the scale required to display

8、clear, round clock face has length and color and thickness of each are not the same pointer, instant needle, minute, second hand, in order to coincide each pointer can also be easily recognizable, the law requires the movement of the pointer resistance, and is clockwise, Analog clock dial the follow

9、ing is a digital form of display time digital clock, digital clock, clock face is a regular rectangular, its display time format is hours: minutes: seconds, hours of 12 hex, minutes, and seconds is 60 hex, Analog clock and digital clock displays the time synchronization, and the two clocks show the

10、time and the computer's system time is consistent with the menu item page time setting columns, you can adjust the displayed time can be adjusted by the specific content is the year, month, day, hour, minute, second. This analog clock looks simple, functional and practical application to the clo

11、ck basically the same, and it is very convenient.Keywords: Analog; Alarm; System Time目錄第一章 引言61.1課題背景及意義61.2課題的研究方法6第二章 課程設(shè)計(jì)目的與要求72.1 課程設(shè)計(jì)目的72.2 課程設(shè)計(jì)的實(shí)驗(yàn)環(huán)境82.3 課程設(shè)計(jì)的預(yù)備知識(shí)82.4 課程設(shè)計(jì)要求8第三章 課程設(shè)計(jì)內(nèi)容93.1.功能分析93.2程序流程相應(yīng)說明9第四章 軟件設(shè)計(jì)114.1 設(shè)計(jì)步驟114.2 界面設(shè)計(jì)134.3時(shí)間顯示134.3.1 模擬時(shí)鐘顯示134.3.2 狀態(tài)欄顯示時(shí)間144.3.3定時(shí)功能144.4 測(cè)試結(jié)果1

12、54.5 關(guān)鍵源代碼15第五章 課程設(shè)計(jì)總結(jié)19致 謝20參考文獻(xiàn)21第一章 引言1.1課題背景及意義隨著社會(huì)的發(fā)展,進(jìn)入21世紀(jì),個(gè)人電腦已經(jīng)進(jìn)入千家萬戶,人們已習(xí)慣于以互聯(lián)網(wǎng)的方式交流,學(xué)習(xí)和娛樂。網(wǎng)上跨國交流也越見頻繁,由于時(shí)差的關(guān)系,人們?cè)跒g覽國外新聞時(shí)經(jīng)常需要進(jìn)行時(shí)間的換算。不同地區(qū)作息時(shí)間的不同也影響到人們的交流。一種指針式鬧鐘的時(shí)鐘程序,將給人們的生活與交流帶來極大地方便。1.2課題的研究方法通過對(duì)VC+可視化編程的學(xué)習(xí)以及各地區(qū)時(shí)間差的查詢,本文主要采用MFC控件和多線程編程技術(shù),以及三個(gè)與時(shí)間有關(guān)的函數(shù)SetTimer()、OnTimer()和KillTimer(),設(shè)計(jì)實(shí)現(xiàn)

13、一個(gè)包含計(jì)時(shí)器功能和鬧鐘功能的多時(shí)區(qū)時(shí)鐘程序。第2章 課程設(shè)計(jì)目的與要求2.1 課程設(shè)計(jì)目的將理論教學(xué)中涉及到的知識(shí)點(diǎn)貫穿起來,對(duì)不同的數(shù)據(jù)類型、程序控制結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)作一比較和總結(jié),結(jié)合設(shè)計(jì)題目進(jìn)行綜合性應(yīng)用,對(duì)所學(xué)知識(shí)達(dá)到融會(huì)貫通的程度。通過課程設(shè)計(jì),學(xué)生在下述各方面的能力應(yīng)該得到鍛煉:(1)進(jìn)一步鞏固、加深學(xué)生所學(xué)專業(yè)課程C+語言教程的基本理論知識(shí),理論聯(lián)系實(shí)際,進(jìn)一步培養(yǎng)學(xué)生綜合分析問題,解決問題的能力。(2)全面考核學(xué)生所掌握的基本理論知識(shí)及其實(shí)際業(yè)務(wù)能力,從而達(dá)到提高學(xué)生素質(zhì)的最終目的。(3)利用所學(xué)知識(shí),開發(fā)小型應(yīng)用系統(tǒng),掌握運(yùn)用C+語言編寫調(diào)試應(yīng)用系統(tǒng)程序,訓(xùn)練獨(dú)立開發(fā)應(yīng)用系統(tǒng)

14、,進(jìn)行數(shù)據(jù)處理的綜合能力。(4)對(duì)于給定的設(shè)計(jì)題目,如何進(jìn)行分析,理清思路,并給出相應(yīng)的數(shù)學(xué)模型。 (5)掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的方法。(6)熟練掌握C+語言的基本語法,靈活運(yùn)用各種數(shù)據(jù)類型。(7)進(jìn)一步掌握在集成環(huán)境下如何調(diào)試程序(單步調(diào)試,設(shè)置斷點(diǎn)、觀察表達(dá)式,分塊調(diào)試)和修改程序。2.2 課程設(shè)計(jì)的實(shí)驗(yàn)環(huán)境硬件要求能運(yùn)行Windows 操作系統(tǒng)的微機(jī)系統(tǒng)。C+語言應(yīng)用程序開發(fā)軟件使用:VC+ 系統(tǒng),或其他C+語言應(yīng)用程序開發(fā)軟件。2.3 課程設(shè)計(jì)的預(yù)備知識(shí)熟悉C+語言程序設(shè)計(jì)的基本知識(shí)及VC+編輯器的使用方法。2.4 課程設(shè)計(jì)要求利用所學(xué)的面向?qū)ο蠹癈+編程知識(shí)和技巧,通過布置具有一定難度

15、的程序設(shè)計(jì)題目,并且要求學(xué)生獨(dú)立完成所布置題目,在分析設(shè)計(jì)過程中,要求學(xué)生養(yǎng)成良好的編程習(xí)慣,學(xué)會(huì)分析簡(jiǎn)單的實(shí)際問題,并能利用所學(xué)的知識(shí)建立系統(tǒng)的邏輯結(jié)構(gòu),學(xué)會(huì)簡(jiǎn)單的調(diào)試技巧和方法。根據(jù)系統(tǒng)的功能要求,要求學(xué)生逐步完成應(yīng)用程序的設(shè)計(jì),具體要求為:1、按規(guī)定的時(shí)間及要求上機(jī)。2、設(shè)計(jì)方案正確,正確劃分所選課題的系統(tǒng)功能模塊。3、系統(tǒng)設(shè)計(jì)要盡量實(shí)用,數(shù)據(jù)與功能分析詳細(xì)。4、要求C+編碼簡(jiǎn)潔、穩(wěn)定、高效。5、獨(dú)立查閱資料,認(rèn)真書寫課程設(shè)計(jì)說明書。第三章 課程設(shè)計(jì)內(nèi)容3.1.功能分析(1)正確顯示系統(tǒng)時(shí)鐘;(2)能準(zhǔn)確定位時(shí)鐘刻度和時(shí)分秒針的位置;(3)能夠完成基本的鐘表的走時(shí)功能、對(duì)表功能、定時(shí)功能

16、;3.2程序流程相應(yīng)說明(1) 程序運(yùn)行后,出現(xiàn)了以時(shí)針、分針和秒針的指針式的時(shí)鐘和以數(shù)字方式顯示時(shí)間的數(shù)字時(shí)鐘,所顯示的時(shí)間與電腦同步,程序運(yùn)行正確。(2) 繪制指針式的時(shí)鐘和插入背景時(shí)鐘圖片時(shí),可以運(yùn)用CView類,CView類提供了視圖類所需要的最基本的功能實(shí)現(xiàn),其提供的虛擬方法使應(yīng)用程序可以重寫它們提供CView派生類中的方法,其中OnDraw()函數(shù)是重繪視圖窗口時(shí)被調(diào)用, 調(diào)用MoveTo和LineTo繪制表盤指針。(3) 模擬時(shí)鐘處理消息的過程:首先調(diào)用SetTimer函數(shù)定義時(shí)鐘消息,包括參數(shù)指定計(jì)時(shí)器的ID,消息產(chǎn)生的時(shí)間間隔等;然后在相應(yīng)的WM_TIMER消息處理里添加時(shí)鐘

17、消息響應(yīng)代碼。在該模擬時(shí)鐘設(shè)計(jì)的程序中,調(diào)用消息處理函數(shù)OnTimer()刷新窗口顯示。(4) 要實(shí)現(xiàn)時(shí)鐘的動(dòng)態(tài)效果,即時(shí)間窗顯示的時(shí)間每隔一秒鐘更新一次,需要在時(shí)間窗格的正文調(diào)用CStatusBar:SetPaneText()函數(shù)。要定時(shí)更新,則應(yīng)利用WM_TIMER消息。在Window中,用戶可以安裝一個(gè)或多個(gè)計(jì)時(shí)器,計(jì)時(shí)器每隔一定的時(shí)間間隔就會(huì)發(fā)出一個(gè)WM_TIMER消息,而這個(gè)時(shí)間間隔可由用戶指定。MFC的Windows類提供了WM_TIMER消息處理函數(shù)OnTimer(),應(yīng)在該函數(shù)內(nèi)進(jìn)行更新時(shí)間窗格的工作。先利用ClassWazard給CMainFrame類加入WM_TIMER消息

18、處理函數(shù)OnTimer(),CMainFrame: OnTimer()函數(shù)是在系統(tǒng)發(fā)給框架窗口消息WM_TIMER時(shí)調(diào)用的,在CMainFrame:OnCreate()函數(shù)內(nèi)調(diào)用CWnd:SetTimer()以安裝一個(gè)計(jì)時(shí)器,使OnTimer()在設(shè)定的時(shí)間間隔被調(diào)用。(5) 通過調(diào)用GetCurrentTime()函數(shù)來實(shí)現(xiàn)時(shí)鐘時(shí)間與計(jì)算機(jī)系統(tǒng)時(shí)間保持一致,使時(shí)間與計(jì)算機(jī)同步后。(6) 在程序設(shè)計(jì)過程之中添加菜單,用菜單項(xiàng)控制彈出對(duì)話框設(shè)置顯示的時(shí)間,這樣可以使時(shí)鐘達(dá)到可調(diào)的效果。(7) 程序運(yùn)行正常,界面設(shè)置合理,指針式的時(shí)鐘和數(shù)字式的時(shí)鐘的運(yùn)動(dòng)達(dá)到任務(wù)書的要求,并且能用菜單項(xiàng)控制對(duì)話框以

19、實(shí)現(xiàn)對(duì)當(dāng)前時(shí)間的調(diào)整,程序達(dá)到各項(xiàng)功能之后,退出界面,程序結(jié)束。第四章 軟件設(shè)計(jì)4.1 設(shè)計(jì)步驟使用AppWizard創(chuàng)建一個(gè)基于對(duì)話框的MFC工程,將之命名為abao。所有步驟均使用AppWizard給出的默認(rèn)設(shè)置, 完成對(duì)話框的創(chuàng)建。在CmainFrame類中加入消息處理函數(shù)OnTimer(),在OnCreate()中添加代碼,在CmainFrame:OnDraw(CDC* pDC)中顯示背景圖片以及調(diào)整,添加指針代碼,在CMainFrame:OnTimer(UINT nIDEvent)中添加輸出數(shù)字時(shí)鐘的代碼。(3) 在Resource View選項(xiàng)卡中打開Menu資源組,雙擊IDR_M

20、AINFRAME,在菜單項(xiàng)中添加一個(gè)“設(shè)置”的控件,再在“設(shè)置”的目錄下添加一個(gè)“時(shí)間”的控件,設(shè)ID為IDC_EDIT_SET,通過ClassWizard為菜單連接對(duì)話框類CInputDlg,使菜單便能在程序運(yùn)行后顯示在應(yīng)用程序主對(duì)話框上,菜單效果圖如圖2所示。圖2 菜單效果圖(4) 在Resource View選項(xiàng)卡中打開Dialog資源組,新建并雙擊IDD_DIALOG1,在出現(xiàn)的對(duì)話框中添加所需的控件,根據(jù)需要對(duì)其屬性進(jìn)行修改,并建立類向?qū)В庉嬁蛐Ч麍D如圖3所示。圖3 編輯框效果圖(5) 在頭文件中添加對(duì)各種函數(shù)及變量的聲明,同時(shí)在類的原文件中添加實(shí)現(xiàn)功能所需要的各種函數(shù),并添加相應(yīng)

21、的代碼。(6) 對(duì)完成后的程序不斷進(jìn)行調(diào)試,分析并修改其中的錯(cuò)誤,直到程序運(yùn)行不再報(bào)錯(cuò),并能夠?qū)崿F(xiàn)所要求的各項(xiàng)功能。4.2 界面設(shè)計(jì)模擬時(shí)鐘的界面設(shè)計(jì)比較簡(jiǎn)單,如圖3所示,只需6個(gè)編輯框和相應(yīng)的6個(gè)靜態(tài)文本框,由于顯示的時(shí)間都是整數(shù),所以控件的類型都選為int型,因而所需要設(shè)計(jì)的控件也比較簡(jiǎn)單,界面設(shè)計(jì)的控件表如表1所示。表1 界面控件表 控件序號(hào) 控件名稱 控件類型控件ID 相應(yīng)變量 1 時(shí) 編輯框(CString) IDC_hour m_a 2 分 編輯框(CString) IDC_minute m_b 3 秒 編輯框(CString) IDC_second m_c4.3時(shí)間顯示4.3.1

22、 模擬時(shí)鐘顯示模擬時(shí)鐘的顯示主要在于插入和繪圖這兩方面,也是本次模擬時(shí)鐘課程設(shè)計(jì)的重中之重。這一部分所要添加的代碼在File View選項(xiàng)卡中的Source File資源組里CCK52View.cpp中:(1) 首先要調(diào)用SetTimer()函數(shù)設(shè)置時(shí)間間隔,語句是SetTimer(1,1000,NULL),SetTimer()的第一個(gè)參數(shù)指定計(jì)時(shí)器ID為1,第二個(gè)參數(shù)規(guī)定了計(jì)時(shí)器的時(shí)間間隔為1000ms,即1s,這樣,每隔1s就調(diào)用一次OnTimer()函數(shù)。(2)定義畫筆hourPen、minutePen1、secondPen2分別為時(shí)針、分針、秒針的畫筆。通過插入圖片的位置以及圖片長(zhǎng)寬確

23、定時(shí)針、分針和秒針的位置,并根據(jù)所取系統(tǒng)時(shí)間GetHour()、GetMinute()、GetSecond()來決定時(shí)針、分針和秒針的轉(zhuǎn)向。4.3.2 狀態(tài)欄顯示時(shí)間先在在String Table中添加New String,在此定義為ID_INDICATOR_CLOCK,將其Caption設(shè)為00:00:00,對(duì)應(yīng)的Value值加1(可在resource.h中修改)。在MainFrm.cpp中indicators聲明處添加ID_INDICATOR_CLOCK,代碼如下:static UINT indicators =ID_SEPARATOR, ID_INDICATOR_CLOCK, /這里排列

24、影響顯示順序ID_INDICATOR_CAPS,ID_INDICATOR_NUM,ID_INDICATOR_SCRL,;然后在CMainFrame:OnTimer(UINT nIDEvent) 中添加如下代碼使得狀態(tài)欄時(shí)間隨系統(tǒng)時(shí)間變化而變化:CTime time;time=CTime:GetCurrentTime();/得到當(dāng)前時(shí)間CString s=time.Format("%H:%M:%S");/轉(zhuǎn)換時(shí)間格式m_wndStatusBar.SetPaneText(m_wndStatusBar.CommandToIndex(ID_INDICATOR_CLOCK),s);

25、/顯示時(shí)鐘4.3.3定時(shí)功能要實(shí)現(xiàn)定時(shí)功能,需要在CMainFrame:OnTimer(UINT nIDEvent) 中添加如下代碼:/獲取當(dāng)前系統(tǒng)時(shí)間顯示到靜態(tài)文本框time上CString str;CTime t = CTime:GetCurrentTime(); str.Format("%d時(shí)%d分%d秒",t.GetHour(),t.GetMinute(),t.GetSecond();/判斷當(dāng)前時(shí)間與設(shè)定時(shí)間是否一致if (s=str)PlaySound("1.wav",NULL,SND_FILENAME|SND_ASYNC);MessageBo

26、x(str,"TIMEs UP!",MB_OK);4.4 測(cè)試結(jié)果經(jīng)分析程序錯(cuò)誤原因并加以改正之后進(jìn)行調(diào)試、程序編譯、連接無錯(cuò)誤后,程序能正確運(yùn)行,圖4顯示了程序運(yùn)行后模擬時(shí)鐘以及打開菜單項(xiàng)的界面。圖4 程序運(yùn)行圖經(jīng)測(cè)試,程序運(yùn)行成功后,出現(xiàn)了指針式的時(shí)鐘和數(shù)字式的時(shí)鐘,二者時(shí)間與計(jì)算機(jī)同步,時(shí)針、分針和秒針形象美觀,即使各指針重合也可辨認(rèn),各項(xiàng)功能正常。4.5 關(guān)鍵源代碼模擬時(shí)鐘的源代碼關(guān)鍵在對(duì)于時(shí)鐘的繪制和設(shè)置計(jì)時(shí)器上,添加的代碼在File View選項(xiàng)卡中的Source File資源組里面的CCK52View.cpp中,以下代碼是關(guān)于模擬時(shí)鐘的繪制:void CCk5

27、2View:OnDraw(CDC* pDC)CBitmap bmp;/bmp位圖對(duì)象bmp.LoadBitmap(IDB_BITMAP1);/IDB_BITMAP3為圖像對(duì)象的IDBITMAP bmpInfo;/位圖信息對(duì)象bmp.GetBitmap(&bmpInfo);/獲取位圖信息CDC dcMemory,*dc;/在內(nèi)存中創(chuàng)建一個(gè)位圖兼容設(shè)備dc=GetDC();/獲取設(shè)備上下文對(duì)象的類dcdcMemory.CreateCompatibleDC(dc);/創(chuàng)建內(nèi)存位圖兼容設(shè)備CBitmap *pOldBmp=dcMemory.SelectObject(&bmp);/將圖片

28、選入兼容設(shè)備/將兼容設(shè)備的內(nèi)容copy到屏幕設(shè)備中,實(shí)現(xiàn)真正的Paintdc->BitBlt(300, 0, bmpInfo.bmWidth, bmpInfo.bmHeight, &dcMemory, 0, 0, SRCCOPY);/將設(shè)備還原dcMemory.SelectObject(pOldBmp);CPen pen(PS_SOLID,2,RGB(255,255,0);CPen *pOldPen=(CPen*)pDC -> SelectObject(&pen);static const double pi=3.1415926535;double rate = (

29、double)(2.0 * pi / 60.0);double halfPi=pi/2;int zoomR=160;CTime time = CTime:GetCurrentTime();int hour = time.GetHour();int minute = time.GetMinute();int second = time.GetSecond();int x0=bmpInfo.bmWidth/2+300;int y0=bmpInfo.bmHeight/2;/繪制秒數(shù)指針CPen secondPen(PS_SOLID,3,RGB(200,0,0);pDC -> SelectObj

30、ect(secondPen);pDC -> MoveTo(CPoint(x0,y0);int secondX = (int)(zoomR-22) * sin(rate * second)+ x0);int secondY = (int)(-(zoomR-22) * sin(rate * second +halfPi)+ y0);pDC -> LineTo(CPoint(secondX,secondY);/繪制分鐘數(shù)指針CPen minutePen(PS_SOLID,8,RGB(0,255,0);pDC -> SelectObject(minutePen);pDC ->

31、MoveTo(CPoint(x0,y0);int minuteX = (int)(zoomR-60) * sin(rate * minute)+ x0);int minuteY = (int)(-(zoomR-60) * sin(rate * minute +halfPi)+ y0);pDC -> LineTo(CPoint(minuteX,minuteY);/繪制小時(shí)數(shù)指針*/double hourRate=(double)(2.0*pi/12.0);if(hour > 12)hour -= 12;CPen hourPen(PS_SOLID,12,RGB(0,0,255);pDC

32、 -> SelectObject(hourPen);pDC -> MoveTo(CPoint(x0,y0);int hourX = (int)(zoomR-100) * sin(hourRate * hour )+ x0);int hourY = (int)(-(zoomR-100) * sin(hourRate * hour +halfPi)+ y0);pDC -> LineTo(CPoint(hourX,hourY);CCk52Doc* pDoc = GetDocument();ASSERT_VALID(pDoc);/ TODO: add draw code for na

33、tive data here設(shè)定鬧鐘時(shí)間代碼如下:void Cabao:OnOK() / TODO: Add extra validation hereUpdateData(TRUE);s=m_a+"時(shí)"+m_b+"分"+m_c+"秒"MessageBox(s,"設(shè)定成功",MB_OK);SetTimer(2,1000,NULL);CDialog:OnOK();定時(shí)器狀態(tài)欄顯示系統(tǒng)時(shí)間以及判斷鬧鐘是否時(shí)間到代碼如下:void CMainFrame:OnTimer(UINT nIDEvent) / TODO: Add

34、 your message handler code here and/or call default/獲取當(dāng)前系統(tǒng)時(shí)間顯示到靜態(tài)文本框time上CString str;CTime t = CTime:GetCurrentTime(); str.Format("%d時(shí)%d分%d秒",t.GetHour(),t.GetMinute(),t.GetSecond();/判斷當(dāng)前時(shí)間與設(shè)定時(shí)間是否一致if (s=str)PlaySound("1.wav",NULL,SND_FILENAME|SND_ASYNC);MessageBox(str,"TIME

35、s UP!",MB_OK);Invalidate();CTime time;time=CTime:GetCurrentTime();/得到當(dāng)前時(shí)間CString s=time.Format("%H:%M:%S");/轉(zhuǎn)換時(shí)間格式m_wndStatusBar.SetPaneText(m_wndStatusBar.CommandToIndex(ID_INDICATOR_CLOCK),s); /顯示時(shí)鐘CFrameWnd:OnTimer(nIDEvent);第五章 課程設(shè)計(jì)總結(jié)經(jīng)過以上步驟,課程設(shè)計(jì)所要求設(shè)計(jì)的模擬時(shí)鐘便成功完成了,它能顯示指針式和數(shù)字式的時(shí)鐘,并且與計(jì)算機(jī)系統(tǒng)時(shí)間保持一致,也可以打開菜單項(xiàng)進(jìn)行鬧鐘設(shè)置。整個(gè)頁面簡(jiǎn)潔清晰,方便用戶讀取,且操作簡(jiǎn)捷,符合課程設(shè)計(jì)中的各項(xiàng)要求

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論