精品資料(2021-2022年收藏)指針式時(shí)鐘課程設(shè)計(jì)報(bào)告_第1頁(yè)
精品資料(2021-2022年收藏)指針式時(shí)鐘課程設(shè)計(jì)報(bào)告_第2頁(yè)
精品資料(2021-2022年收藏)指針式時(shí)鐘課程設(shè)計(jì)報(bào)告_第3頁(yè)
精品資料(2021-2022年收藏)指針式時(shí)鐘課程設(shè)計(jì)報(bào)告_第4頁(yè)
精品資料(2021-2022年收藏)指針式時(shí)鐘課程設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、青島理工大學(xué)C+面向?qū)ο笳n程設(shè)計(jì)報(bào)告院(系): 計(jì)算機(jī)工程學(xué)院 專業(yè): 網(wǎng)絡(luò)工程 學(xué)生姓名: 趙建 班級(jí): 網(wǎng)絡(luò)081 學(xué)號(hào): 題目: 指針式時(shí)鐘 起訖日期: 2011.7.52011.7.14 設(shè)計(jì)地點(diǎn): 學(xué)院機(jī)房101 指導(dǎo)老師: 吳 萬(wàn) 春 完成日期:2011年7月14日一、 課程設(shè)計(jì)目的時(shí)鐘幾乎是每個(gè)人生活中必備的生活用品。時(shí)鐘雖小確非常重要。一款良好的時(shí)鐘可以給人們帶來(lái)極大的便利。當(dāng)然,現(xiàn)在關(guān)于時(shí)鐘的各種應(yīng)用程序?qū)映霾磺?,我的目的是設(shè)計(jì)一款界面簡(jiǎn)單、方便易用、功能相對(duì)豐富的指針式時(shí)鐘程序。為了達(dá)到上述目標(biāo),以及課程設(shè)計(jì)的要求,結(jié)合自己自身的情況,選擇了PC平臺(tái)、Windows操作系統(tǒng)

2、、Visual C+ 6.0開(kāi)發(fā)平臺(tái)、MFC框架來(lái)實(shí)現(xiàn)自己的程序。而且希望能通過(guò)自己這款小應(yīng)用程序的設(shè)計(jì),來(lái)掌握面向?qū)ο蟮某绦蛟O(shè)計(jì)方法,了解C+面向?qū)ο蟮脑O(shè)計(jì)方法和技巧,有效地、深刻地理解課程內(nèi)容,體會(huì)理論、方法和設(shè)計(jì)原則;培養(yǎng)分析實(shí)際問(wèn)題和解決問(wèn)題的能力,具備使用面向?qū)ο蟪绦蛟O(shè)計(jì)開(kāi)發(fā)工具設(shè)計(jì)實(shí)際系統(tǒng)的能力。二、 課程設(shè)計(jì)內(nèi)容及要求程序所實(shí)現(xiàn)的功能:運(yùn)行界面是一指針式時(shí)鐘,包括時(shí)分秒三個(gè)指針,有12個(gè)鐘點(diǎn)的顯示,并通過(guò)指針的轉(zhuǎn)動(dòng)來(lái)實(shí)時(shí)更新時(shí)間。同時(shí)可以顯示相應(yīng)時(shí)間的數(shù)字鐘形式。通過(guò)菜單可以實(shí)現(xiàn)鬧鈴功能、表盤(pán)背景、指針顏色設(shè)置、倒計(jì)時(shí)等功能。同時(shí)為程序窗口增加了一張精美圖片作為背景三、 系統(tǒng)分析

3、與設(shè)計(jì)1、 系統(tǒng)分析為了使程序的顯示更加美觀,該程序使用了C+可視化程序設(shè)計(jì)方法進(jìn)行設(shè)計(jì)。在可視化程序設(shè)計(jì)中,建立了一個(gè)MFC單文檔應(yīng)用程序工程,該工程包括了視圖類、文檔類對(duì)話框類和主框架類。在主框架類中修改窗口等屬性,使整個(gè)時(shí)間的顯示更加協(xié)調(diào)。模擬電子時(shí)鐘是一個(gè)顯示和計(jì)時(shí)的小程序,因此只要在視圖類和文檔類添加相關(guān)的屬性和方法即可完成模擬電子時(shí)鐘的功能。文檔類定義時(shí)鐘的相關(guān)屬性,包括int類型的year、month、day、hour、minute、second,和包括CString類型的str_year、str_month、str_day、str_hour、str_minute、str_sec

4、ond等信息。int類型的時(shí)間日期屬性用以計(jì)算,CSrting類型的時(shí)間日期屬性用以顯示,通過(guò)CString類中的成員函數(shù)Formart可以把int型的數(shù)據(jù)轉(zhuǎn)成CString型的。視圖類實(shí)現(xiàn)時(shí)鐘的主要功能,在該類的OnDraw函數(shù)里面對(duì)時(shí)間日期進(jìn)行顯示輸出。向窗口輸出信息時(shí),為了保證高刷新率下繪圖不閃爍,使用內(nèi)存繪圖的方法,在內(nèi)存中創(chuàng)建一個(gè)與屏幕繪圖區(qū)域一致的對(duì)象,使得重繪視圖時(shí)可以大大提高運(yùn)行速度。為了使計(jì)時(shí)能夠達(dá)到幾乎無(wú)誤差,使用了一個(gè)獲取系統(tǒng)兩秒間隔作為計(jì)時(shí)間隔的方法,使得計(jì)時(shí)間隔和系統(tǒng)時(shí)間間隔一致。每次重繪視圖的時(shí)候都重新獲取系統(tǒng)時(shí)間,當(dāng)該兩次獲得的秒不一致時(shí),就對(duì)時(shí)間加一秒。通過(guò)一個(gè)

5、計(jì)時(shí)器消息,使視圖50ms刷新一次,以保證時(shí)間的準(zhǔn)確性。在視圖類中需要添加幾個(gè)方法:用于計(jì)算時(shí)間的方法RunTime()、計(jì)算星期的方法Week()、int型轉(zhuǎn)CString型的方法Change()、獲取系統(tǒng)時(shí)間的方法GetDateTime()、重獲系統(tǒng)時(shí)間方法OnReset()和計(jì)時(shí)器消息。在計(jì)算時(shí)間日期的時(shí)候,每達(dá)到1秒的時(shí)候?qū)econd進(jìn)行加1,然后判斷是否達(dá)到60秒,達(dá)到的話minute就加1,同樣的方法對(duì)hour、day、month和year進(jìn)行計(jì)算,在對(duì)day計(jì)數(shù)時(shí),考慮到大小月和閏年,對(duì)day進(jìn)行加1時(shí),判斷是哪一月和是否為閏年。在確定年、月、日之后,使用函數(shù)Week()進(jìn)行對(duì)

6、星期幾的計(jì)算,根據(jù)1901年每月1號(hào)是星期幾可以得出現(xiàn)在是星期幾。在這個(gè)程序中,還使用了一個(gè)對(duì)話框類,使用對(duì)話框來(lái)對(duì)時(shí)間日期的設(shè)置。在菜單欄里添加一個(gè)“設(shè)置時(shí)間”的選項(xiàng)和一個(gè)菜單消息,當(dāng)點(diǎn)擊這個(gè)選項(xiàng)就會(huì)彈出設(shè)置時(shí)間日期的對(duì)話框,對(duì)話框中編輯控件設(shè)定了每個(gè)值的取值范圍,從而對(duì)輸入錯(cuò)誤進(jìn)行排除。2、 系統(tǒng)設(shè)計(jì)2.1 模塊設(shè)計(jì)主要類圖 時(shí)鐘程序時(shí)間查看功能時(shí)鐘工作狀態(tài)設(shè)置功能個(gè)性化顏色設(shè)置功能開(kāi)始工作暫停工作倒計(jì)時(shí)功能表盤(pán)顏色設(shè)置功能時(shí)針顏色設(shè)置分鐘顏色設(shè)置鬧鈴功能秒針顏色設(shè)置各模塊關(guān)系圖畫(huà)出主程序及其主要模塊的流程圖:開(kāi)始用圖片來(lái)填充背景窗口和系統(tǒng)時(shí)間同步時(shí)鐘功能選擇繪制時(shí)鐘指針制作數(shù)字時(shí)鐘繪制表

7、盤(pán)刻度關(guān)閉 結(jié)束2.2算法流程圖OnDraw函數(shù)流程圖四、 系統(tǒng)測(cè)試與調(diào)試分析1、系統(tǒng)測(cè)試測(cè)試說(shuō)明測(cè)試名稱指針式時(shí)鐘測(cè)試目的驗(yàn)證軟件的時(shí)間功能測(cè)試技術(shù)單元測(cè)試測(cè)試方法黑盒測(cè)試法測(cè)試用例測(cè)試內(nèi)容顯示時(shí)間和系統(tǒng)時(shí)間對(duì)比測(cè)試步驟運(yùn)行程序測(cè)試數(shù)據(jù)預(yù)期結(jié)果顯示時(shí)間和系統(tǒng)時(shí)間一致測(cè)試結(jié)果與預(yù)期相符測(cè)試說(shuō)明測(cè)試名稱指針式時(shí)鐘測(cè)試目的驗(yàn)證鬧鐘功能測(cè)試技術(shù)單元測(cè)試測(cè)試方法黑盒測(cè)試法測(cè)試用例測(cè)試內(nèi)容鬧鐘功能 時(shí)間測(cè)試步驟正確輸入鬧鐘時(shí)間正確輸入鬧鐘時(shí)間測(cè)試數(shù)據(jù)當(dāng)前時(shí)間下一分鐘的時(shí)間預(yù)期結(jié)果立即報(bào)時(shí)時(shí)間到后鬧鐘報(bào)時(shí)測(cè)試結(jié)果與預(yù)期相符與預(yù)期相符測(cè)試說(shuō)明測(cè)試名稱指針式時(shí)鐘測(cè)試目的驗(yàn)證倒計(jì)時(shí)功能測(cè)試技術(shù)單元測(cè)試測(cè)試方法黑

8、盒測(cè)試法測(cè)試用例測(cè)試內(nèi)容倒計(jì)時(shí)功能測(cè)試步驟正確時(shí)間測(cè)試數(shù)據(jù)隨意輸入時(shí)間 預(yù)期結(jié)果從輸入的時(shí)間開(kāi)始倒計(jì)時(shí)測(cè)試結(jié)果與預(yù)期相符測(cè)試說(shuō)明測(cè)試名稱指針式時(shí)鐘測(cè)試目的驗(yàn)證改換顏色測(cè)試技術(shù)單元測(cè)試測(cè)試方法黑盒測(cè)試法測(cè)試用例測(cè)試內(nèi)容換指針顏色功能測(cè)試步驟選擇換表盤(pán)顏色選擇換指針顏色測(cè)試數(shù)據(jù)紅色時(shí)針?biāo){色 分針黑色 秒針綠色預(yù)期結(jié)果表盤(pán)顏色變?yōu)榧t時(shí)針?biāo){色 分針黑色 秒針綠色測(cè)試結(jié)果與預(yù)期相符與預(yù)期相符2調(diào)試分析程序的調(diào)試過(guò)程會(huì)發(fā)現(xiàn)很多設(shè)計(jì)程序過(guò)程中的漏洞,也會(huì)有很多bug出現(xiàn),需要仔細(xì)的不斷調(diào)試才能盡量的把程序調(diào)試的完美,我的程序調(diào)試的過(guò)程中出現(xiàn)的問(wèn)題較多,現(xiàn)列舉幾個(gè)比較有代表性的,希望供其他人參考1、 我最初想

9、到的是設(shè)計(jì)出一個(gè)不依靠讀取系統(tǒng)時(shí)間就能獨(dú)立運(yùn)行的時(shí)鐘,但是,個(gè)人能力實(shí)在有限,設(shè)計(jì)了一段時(shí)間還是沒(méi)有頭緒,只能投機(jī)取巧的讀取系統(tǒng)時(shí)間代替了,這樣的話一些個(gè)性話的功能就不能夠?qū)崿F(xiàn)了,像把一分鐘設(shè)置成120秒,每小時(shí)30分鐘等2、 目前的程序雖然能正常運(yùn)行,但是,對(duì)于一些錯(cuò)誤是不能反映出來(lái)的,像輸入鬧鐘時(shí)間,如果輸入的范圍不對(duì)的話也不能給出提示3、 鬧鐘的時(shí)間輸入因?yàn)闆](méi)有秒的限制,如果是當(dāng)前時(shí)間的話,目前的程序會(huì)直接報(bào)時(shí),應(yīng)該可以改成當(dāng)前時(shí)間不報(bào)時(shí)的五、用戶手冊(cè)1、windows系統(tǒng) vc+6.0設(shè)計(jì)2、本程序不需要安裝使用,直接運(yùn)行即可彈出時(shí)鐘對(duì)話框3、圖1 時(shí)鐘主界面圖2 程序功能界面進(jìn)入程序

10、后會(huì)彈出圖1界面顯示系統(tǒng)時(shí)間,點(diǎn)擊設(shè)置按鈕可以出現(xiàn)圖2功能列表 圖3 鬧鐘時(shí)間設(shè)置界面 圖4 倒計(jì)時(shí)時(shí)間設(shè)置界面打開(kāi)功能列表可以選擇各個(gè)功能,圖3為選擇鬧鐘功能彈出的對(duì)話框,圖4為選擇倒計(jì)時(shí)功能彈出的對(duì)話框圖5 表盤(pán)及指針顏色設(shè)置界面選擇設(shè)置表盤(pán)或者各指針顏色時(shí)都會(huì)彈出圖5,選擇喜歡的顏色點(diǎn)擊確定后即可改變顏色六、程序清單(1): /視圖類的構(gòu)造函數(shù)CShejiView:CShejiView()/ TODO: add construction code hereCBitmap bmp;/定義一個(gè)位圖類型的變量。bmp.LoadBitmap(IDB_BITMAP1); /加載位圖 m_brush

11、Background.CreatePatternBrush(&bmp);/創(chuàng)建位圖畫(huà)刷。CTime curtime = CTime:GetCurrentTime();/同步系統(tǒng)時(shí)間。m_hour = curtime.GetHour();m_minute = curtime.GetMinute();m_second = curtime.GetSecond();flag=0;/時(shí)鐘正常工作狀態(tài)flag2=1;/倒計(jì)時(shí)無(wú)效;hour=-1;minute=-1;set=0;(2)/ondraw()函數(shù)進(jìn)行繪制void CShejiView:OnDraw(CDC* pDC)CShejiDoc*

12、pDoc = GetDocument();ASSERT_VALID(pDoc);/ TODO: add draw code for native data hereCRect rect;GetClientRect(rect);/取得客戶區(qū)域 pDC->FillRect(rect,&m_brushBackground); /用背景畫(huà)刷填充區(qū)域,而我們?cè)趍brushbackground里加載了位圖,所以理所當(dāng)然就變成了我們?cè)O(shè)置的圖片/畫(huà)表盤(pán),標(biāo)注刻度CRect client;GetClientRect(&client);int centerX = client.Width()

13、/2;int centerY = client.Height()/2;int clockRadius = centerX > centerY ? centerY : centerX;/用較小的一個(gè)作為鐘表的半徑,避免半徑太大矩形放不開(kāi)clockRadius = clockRadius * 0.9;int keduDRadius = clockRadius * 0.85;int keduXRadius = clockRadius * 0.95;int hourRadius = clockRadius * 0.3;/時(shí)針半徑int minuteRadius = clockRadius * 0

14、.5;/分針半徑int secondRadius = clockRadius * 0.7;/秒針半徑/CPen clockPen(PS_SOLID, 2, RGB(0,0,255); CPen clockPen(PS_SOLID, 2, bpcolor);/配合下面的執(zhí)行代碼,使用自己定義的畫(huà)筆來(lái)設(shè)置表盤(pán)的顏色CPen * oldPen = pDC->SelectObject(&clockPen);/恢復(fù)到原來(lái)的畫(huà)筆/標(biāo)注刻度f(wàn)or(int i = 0; i< 12; i+)pDC->MoveTo(centerX + keduDRadius * cos(i * 30

15、* PI / 180), centerY + keduDRadius * sin(i * 30 * PI / 180);pDC->LineTo(centerX + clockRadius * cos(i * 30 * PI / 180), centerY + clockRadius * sin(i * 30 * PI / 180);for(int j = 0; j< 60; j+)pDC->MoveTo(centerX + keduXRadius * cos(j * 6 * PI / 180),/keduxradius是0.95,更加接近圓周,所以比起時(shí)針當(dāng)然理所當(dāng)然的更短

16、centerY + keduXRadius * sin(j * 6 * PI / 180);pDC->LineTo(centerX + clockRadius * cos(j * 6 * PI / 180), centerY + clockRadius * sin(j * 6 * PI / 180);pDC->SelectObject(oldPen);/調(diào)節(jié)時(shí),分,秒針角度顯示的關(guān)系double secondRadians = m_second * 2 * PI / 60;/一個(gè)圓周是2pi,共有60秒,所以一秒是左邊這個(gè)表達(dá)式,用的是弧度值double minuteRadians

17、 = m_minute * 2 * PI / 60 + secondRadians / 60;/秒針每動(dòng)一格,其效果等同于分針動(dòng)1/60格double hourRadians = m_hour * 2 * PI / 12 + minuteRadians*5 / 60; /依照所計(jì)算的角度畫(huà)出時(shí),分,秒針/CPen secondPen(PS_SOLID, 2, RGB(0,255,0);CPen secondPen(PS_SOLID,2,secondcolor);oldPen = pDC->SelectObject(&secondPen);pDC->MoveTo(center

18、X , centerY);/時(shí)針的起點(diǎn)在中心pDC->LineTo(centerX + double(secondRadius) * sin(secondRadians), centerY - double(secondRadius) * cos(secondRadians);pDC->SelectObject(oldPen); /CPen minutePen(PS_SOLID, 4, RGB(255,255,0);CPen minutePen(PS_SOLID, 4, minutecolor);oldPen = pDC->SelectObject(&minutePe

19、n);pDC->MoveTo(centerX , centerY);pDC->LineTo(centerX + double(minuteRadius) * sin(minuteRadians), centerY - double(minuteRadius) * cos(minuteRadians);pDC->SelectObject(oldPen);/CPen hourPen(PS_SOLID, 8, RGB(255,0,255);CPen hourPen(PS_SOLID,8,hourcolor);oldPen = pDC->SelectObject(&ho

20、urPen);pDC->MoveTo(centerX , centerY);pDC->LineTo(centerX + double(hourRadius) * sin(hourRadians), centerY - double(hourRadius) * cos(hourRadians);pDC->SelectObject(oldPen);/畫(huà)表盤(pán)中心CBrush abrush(RGB(255,0,0);CBrush * oldbrush = pDC->SelectObject(&abrush);pDC->Ellipse(centerX - 8, ce

21、nterY - 8 , centerX +8, centerY +8);/最左是圓心減8,最右是圓心加8pDC->SelectObject(oldbrush);/定義數(shù)字時(shí)鐘的位置,顯示當(dāng)前時(shí)間CRect dianzibiao(centerX-52,centerY*6/15, centerX+52,centerY);CString shijian;char temp13, temp23, temp33;itoa(m_hour, temp1, 10);itoa(m_minute, temp2, 10);/ITOA功能,把一整書(shū)轉(zhuǎn)換為字符串,10進(jìn)制itoa(m_second, temp3,

22、 10);shijian.Insert(0, temp1);/temp1用來(lái)保存小時(shí),temp2用來(lái)保存分鐘,temp3用來(lái)保存秒 shijian += ":"/時(shí)和分之間的帽號(hào) if(m_minute < 10)shijian += "0"/如果分鐘小于10,則在前面加上字符“0”,以用來(lái)顯示 “07”、“08”之類的形式shijian += temp2;shijian += ":"if(m_second < 10)shijian += "0"/同理shijian += temp3;/完成數(shù)字時(shí)鐘顯示

23、當(dāng)前時(shí)間pDC->SetBkMode (TRANSPARENT);pDC->SetTextColor(RGB(255,0,0); pDC->DrawText(shijian,&dianzibiao,DT_CENTER);/dianzibiao是一個(gè)矩形,shijian是我們轉(zhuǎn)換后的cstring類型/設(shè)置文本的字體大小,顏色CString b("指針式時(shí)鐘-陳慶敬");CFont abc;abc.CreateFont(15, / nHeight 0, / nWidth 0, / nEscapement 0, / nOrientation FW_UL

24、TRABOLD, / nWeight FALSE, / bItalic FALSE, / bUnderline 0, / cStrikeOut ANSI_CHARSET, / nCharSet OUT_DEFAULT_PRECIS, / nOutPrecision CLIP_DEFAULT_PRECIS, / nClipPrecision DEFAULT_QUALITY, / nQuality DEFAULT_PITCH | FF_SWISS, / nPitchAndFamily b); / lpszFacenameCFont * oldFont = pDC->SelectObject(

25、&abc);pDC->SetTextColor(RGB(255,0,0);CRect rectText1(centerX-52,centerY*3/2, centerX+52,centerY*2);pDC->DrawText(b, &rectText1, DT_CENTER); CString c("12");CRect rectText2(centerX-8,centerY-keduDRadius*10/9+10, centerX+8,centerY-(keduDRadius*10/9-14)+10);pDC->SetTextColor(

26、RGB(255,0,0); pDC->DrawText(c, &rectText2, DT_CENTER); CString d("6");CRect rectText3(centerX-5,centerY+(keduDRadius*10/9-14-10), centerX+5,centerY+keduDRadius*10/9-10);pDC->DrawText(d, &rectText3, DT_CENTER); CString e("9");CRect rectText4(centerX-(keduDRadius*10/9

27、-14)+10,centerY-7, centerX-keduDRadius*10/9+10,centerY+7);pDC->DrawText(e, &rectText4, DT_CENTER); CString f("3");CRect rectText5(centerX+(keduDRadius*10/9-14)-10,centerY-7, centerX+keduDRadius*10/9-10,centerY+7);pDC->DrawText(f, &rectText5, DT_CENTER);pDC->SelectObject(ol

28、dFont);/若定時(shí)時(shí)間到則提醒“時(shí)間到”if(m_hour=hour)&&(m_minute=minute)&&(set=0)PlaySound(LPCTSTR)IDR_WAVE1, AfxGetInstanceHandle(), SND_RESOURCE | SND_ASYNC);/播放插入的格式為wav的音樂(lè)文件set=1;/這個(gè)函數(shù)使你能夠獲得當(dāng)前應(yīng)用程序的實(shí)例句柄。AfxGetInstanceHandle總是/返回代表你的可執(zhí)行文件(.EXE)的HINSTANCE值,除非它從與MFC的USRDLL/版本連接的DLL內(nèi)調(diào)用的。在這種情況下,它返回的是D

29、LL的HINSTANCE值。/如果要求時(shí)鐘暫停,則不調(diào)用OnTimer函數(shù)if(flag&&flag2)return;/調(diào)用OnTimer函數(shù)SetTimer(1,1000,NULL);/每1000毫秒產(chǎn)生一個(gè)消息,在ontimer函數(shù)里編輯相應(yīng)的/響應(yīng)代碼(3): /工作狀態(tài)設(shè)定void CShejiView:OnBegin() /開(kāi)始運(yùn)行/ TODO: Add your command handler code hereflag=0;/0為正常,表示時(shí)鐘正常運(yùn)行flag2=1;/1為不正常,表示此時(shí)倒計(jì)時(shí)不工作Invalidate();void CShejiView:OnP

30、ause() /暫停運(yùn)行/ TODO: Add your command handler code hereflag=1;flag2=1;KillTimer(1);/KillTimer:移除定時(shí)器函數(shù)的聲明:移除先前用SetTimer設(shè)置的定時(shí)器。在定時(shí)器使用完畢后移除定時(shí)器時(shí)使用Invalidate();void CShejiView:OnSetback() /倒計(jì)時(shí)功能/ TODO: Add your command handler code hereCsetback dia;if(dia.DoModal()=IDOK)/如果點(diǎn)擊"確認(rèn)“(IDOK)之后,用輸入的時(shí)間來(lái)代替系統(tǒng)本

31、來(lái)的時(shí)間m_hour=dia.m_hour;m_minute=dia.m_minute;m_second=dia.m_second;flag2=0;flag=1;Invalidate();/InvalidateRect只是增加重繪區(qū)域,在下次WM_PAINT的時(shí)候才生效/InvalidateRect函數(shù)中的參數(shù)TRUE表示系統(tǒng)會(huì)在你畫(huà)之前用背景色將所選區(qū)域覆蓋一/次,默認(rèn)背景色為白色,可以通過(guò)設(shè)置BRUSH來(lái)改變背景色。void CShejiView:OnSettimer() /鬧鐘功能/ TODO: Add your command handler code hereCmydialog md

32、;md.m_shour=hour;md.m_sminute=minute;UpdateData(false);if(md.DoModal()=IDOK)/如果Updatedata(TRUE),將控件的值賦值給成員變/量;Updatedata(FALSE),將成員變量的值賦值給控件;UpdateData(true);hour=md.m_shour;minute=md.m_sminute;set=0;(4):/對(duì)時(shí)鐘消息進(jìn)行響應(yīng)void CShejiView:OnTimer(UINT nIDEvent) /OnTimer()函數(shù)是響應(yīng)用SetTimer()函數(shù)設(shè)/定的時(shí)鐘發(fā)送的時(shí)鐘消息的。/為類添

33、加WM_TIMER消息響應(yīng),會(huì)看到類中多了個(gè)OnTimer(UINT nIDEvent)。 /然后用SetTimer(1,1000,NULL)就行了。第一個(gè)參數(shù)是ID,第二個(gè)是間隔時(shí)間,單位/是毫秒,第3個(gè)是響應(yīng)函數(shù),因?yàn)橐贠nTimer(UINT nIDEvent)里面做響應(yīng)操作,所/以此處給個(gè)NULL就行了。/ TODO: Add your message handler code here and/or call default/若為時(shí)鐘狀態(tài)則獲取系統(tǒng)當(dāng)前時(shí)間if(flag=0)CTime curtime = CTime:GetCurrentTime();m_hour = curtim

34、e.GetHour();m_minute = curtime.GetMinute();m_second = curtime.GetSecond();/若為倒計(jì)時(shí)狀態(tài)則判斷是否倒計(jì)時(shí)結(jié)束if(flag2=0) if(m_second|m_minute|m_hour)/如果時(shí)、分、秒不同時(shí)為零,則進(jìn)行倒計(jì)時(shí)if(m_second=0)/如果在時(shí)分秒不同時(shí)為零的情況下,秒為零,那么秒向/分借60秒,如果此時(shí)分也恰好為零,則同時(shí)向時(shí)借60分,因?yàn)楸幻虢枞?0秒,所/以分為59,hour減1m_second=60;if(m_minute=0)m_minute=59;m_hour-;elsem_minut

35、e-;m_second-;else AfxMessageBox("倒計(jì)時(shí)時(shí)間到");flag2=1;KillTimer(1);Invalidate();CView:OnTimer(nIDEvent);(5):/設(shè)置表盤(pán)顏色void CShejiView:OnBpcolor() / TODO: Add your command handler code hereCColorDialog ColorDlg; /創(chuàng)建調(diào)色板對(duì)象ColorDlg.m_cc.Flags|=CC_FULLOPEN;if(IDOK = ColorDlg.DoModal() /將調(diào)色板實(shí)例化bpcolor=

36、 ColorDlg.GetColor(); /獲取選中的顏色void CShejiView:OnHourcolor()/設(shè)置時(shí)針顏色 / TODO: Add your command handler code hereCColorDialog ColorDlg; /創(chuàng)建調(diào)色板對(duì)象ColorDlg.m_cc.Flags|=CC_FULLOPEN;if(IDOK = ColorDlg.DoModal() /將調(diào)色板實(shí)例化hourcolor= ColorDlg.GetColor(); /獲取選中的顏色void CShejiView:OnMinutecolor() /設(shè)置分針顏色/ TODO: Add your command handler code hereCColorDialog ColorDlg; /創(chuàng)建調(diào)色板對(duì)象ColorDlg.m_

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論