指針式時鐘課程設(shè)計報告_第1頁
已閱讀1頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  C++面向?qū)ο笳n程設(shè)計報告</p><p>  院(系): 計算機工程學院 </p><p>  專業(yè): 網(wǎng)絡(luò)工程 </p><p>  班級: 學號: </p><p>  題目: 指針式時鐘

2、 </p><p>  一、 課程設(shè)計目的</p><p>  時鐘幾乎是每個人生活中必備的生活用品。時鐘雖小確非常重要。一款良好的時鐘可以給人們帶來極大的便利。當然,現(xiàn)在關(guān)于時鐘的各種應(yīng)用程序?qū)映霾磺?,我的目的是設(shè)計一款界面簡單、方便易用、功能相對豐富的指針式時鐘程序。為了達到上述目標,以及課程設(shè)計的要求,結(jié)合自己自身的情況,選擇了PC平臺、Windows操作系統(tǒng)、Visual C+

3、+ 6.0開發(fā)平臺、MFC框架來實現(xiàn)自己的程序。而且希望能通過自己這款小應(yīng)用程序的設(shè)計,來掌握面向?qū)ο蟮某绦蛟O(shè)計方法,了解C++面向?qū)ο蟮脑O(shè)計方法和技巧,有效地、深刻地理解課程內(nèi)容,體會理論、方法和設(shè)計原則;培養(yǎng)分析實際問題和解決問題的能力,具備使用面向?qū)ο蟪绦蛟O(shè)計開發(fā)工具設(shè)計實際系統(tǒng)的能力。</p><p><b>  課程設(shè)計內(nèi)容及要求</b></p><p> 

4、 程序所實現(xiàn)的功能:運行界面是一指針式時鐘,包括時分秒三個指針,有12個鐘點的顯示,并通過指針的轉(zhuǎn)動來實時更新時間。同時可以顯示相應(yīng)時間的數(shù)字鐘形式。通過菜單可以實現(xiàn)鬧鈴功能、表盤背景、指針顏色設(shè)置、倒計時等功能。同時為程序窗口增加了一張精美圖片作為背景</p><p><b>  系統(tǒng)分析與設(shè)計</b></p><p><b>  系統(tǒng)分析</b&g

5、t;</p><p>  為了使程序的顯示更加美觀,該程序使用了C++可視化程序設(shè)計方法進行設(shè)計。在可視化程序設(shè)計中,建立了一個MFC單文檔應(yīng)用程序工程,該工程包括了視圖類、文檔類對話框類和主框架類。在主框架類中修改窗口等屬性,使整個時間的顯示更加協(xié)調(diào)。模擬電子時鐘是一個顯示和計時的小程序,因此只要在視圖類和文檔類添加相關(guān)的屬性和方法即可完成模擬電子時鐘的功能。</p><p>  文檔類

6、定義時鐘的相關(guān)屬性,包括int類型的year、month、day、hour、minute、second,和包括CString類型的str_year、str_month、str_day、str_hour、str_minute、str_second等信息。int類型的時間日期屬性用以計算,CSrting類型的時間日期屬性用以顯示,通過CString類中的成員函數(shù)Formart可以把int型的數(shù)據(jù)轉(zhuǎn)成CString型的。</p>

7、<p>  視圖類實現(xiàn)時鐘的主要功能,在該類的OnDraw函數(shù)里面對時間日期進行顯示輸出。向窗口輸出信息時,為了保證高刷新率下繪圖不閃爍,使用內(nèi)存繪圖的方法,在內(nèi)存中創(chuàng)建一個與屏幕繪圖區(qū)域一致的對象,使得重繪視圖時可以大大提高運行速度。為了使計時能夠達到幾乎無誤差,使用了一個獲取系統(tǒng)兩秒間隔作為計時間隔的方法,使得計時間隔和系統(tǒng)時間間隔一致。每次重繪視圖的時候都重新獲取系統(tǒng)時間,當該兩次獲得的秒不一致時,就對時間加一秒。通過

8、一個計時器消息,使視圖50ms刷新一次,以保證時間的準確性。</p><p>  在視圖類中需要添加幾個方法:用于計算時間的方法RunTime()、計算星期的方法Week()、int型轉(zhuǎn)CString型的方法Change()、獲取系統(tǒng)時間的方法GetDateTime()、重獲系統(tǒng)時間方法OnReset()和計時器消息。</p><p>  在計算時間日期的時候,每達到1秒的時候?qū)econ

9、d進行加1,然后判斷是否達到60秒,達到的話minute就加1,同樣的方法對hour、day、month和year進行計算,在對day計數(shù)時,考慮到大小月和閏年,對day進行加1時,判斷是哪一月和是否為閏年。在確定年、月、日之后,使用函數(shù)Week()進行對星期幾的計算,根據(jù)1901年每月1號是星期幾可以得出現(xiàn)在是星期幾。</p><p>  在這個程序中,還使用了一個對話框類,使用對話框來對時間日期的設(shè)置。在菜單

10、欄里添加一個“設(shè)置時間”的選項和一個菜單消息,當點擊這個選項就會彈出設(shè)置時間日期的對話框,對話框中編輯控件設(shè)定了每個值的取值范圍,從而對輸入錯誤進行排除。</p><p><b>  系統(tǒng)設(shè)計</b></p><p><b>  2.1 模塊設(shè)計</b></p><p><b>  主要類圖</b>&

11、lt;/p><p><b>  各模塊關(guān)系圖</b></p><p>  畫出主程序及其主要模塊的流程圖:</p><p><b>  2.2算法流程圖</b></p><p>  OnDraw函數(shù)流程圖</p><p><b>  系統(tǒng)測試與調(diào)試分析</b>

12、;</p><p><b>  1、系統(tǒng)測試</b></p><p><b>  2調(diào)試分析</b></p><p>  程序的調(diào)試過程會發(fā)現(xiàn)很多設(shè)計程序過程中的漏洞,也會有很多bug出現(xiàn),需要仔細的不斷調(diào)試才能盡量的把程序調(diào)試的完美,我的程序調(diào)試的過程中出現(xiàn)的問題較多,現(xiàn)列舉幾個比較有代表性的,希望供其他人參考</

13、p><p>  我最初想到的是設(shè)計出一個不依靠讀取系統(tǒng)時間就能獨立運行的時鐘,但是,個人能力實在有限,設(shè)計了一段時間還是沒有頭緒,只能投機取巧的讀取系統(tǒng)時間代替了,這樣的話一些個性話的功能就不能夠?qū)崿F(xiàn)了,像把一分鐘設(shè)置成120秒,每小時30分鐘等</p><p>  目前的程序雖然能正常運行,但是,對于一些錯誤是不能反映出來的,像輸入鬧鐘時間,如果輸入的范圍不對的話也不能給出提示</p&

14、gt;<p>  鬧鐘的時間輸入因為沒有秒的限制,如果是當前時間的話,目前的程序會直接報時,應(yīng)該可以改成當前時間不報時的</p><p><b>  五、用戶手冊</b></p><p>  1、windows系統(tǒng) vc++6.0設(shè)計</p><p>  2、本程序不需要安裝使用,直接運行即可彈出時鐘對話框</p>

15、<p><b>  3、</b></p><p>  圖1 時鐘主界面圖2 程序功能界面</p><p>  進入程序后會彈出圖1界面顯示系統(tǒng)時間,點擊設(shè)置按鈕可以出現(xiàn)圖2功能列表</p><p>  圖3 鬧鐘時間設(shè)置界面 圖4 倒計時時間設(shè)置界面</p><p>  打開功能

16、列表可以選擇各個功能,圖3為選擇鬧鐘功能彈出的對話框,圖4為選擇倒計時功能彈出的對話框</p><p>  圖5 表盤及指針顏色設(shè)置界面</p><p>  選擇設(shè)置表盤或者各指針顏色時都會彈出圖5,選擇喜歡的顏色點擊確定后即可改變顏色</p><p><b>  六、程序清單</b></p><p> ?。?): /

17、/視圖類的構(gòu)造函數(shù)</p><p>  CShejiView::CShejiView()</p><p><b>  {</b></p><p>  // TODO: add construction code here</p><p>  CBitmap bmp;//定義一個位圖類型的變量。</p>&l

18、t;p>  bmp.LoadBitmap(IDB_BITMAP1); ///加載位圖</p><p>  m_brushBackground.CreatePatternBrush(&bmp);///創(chuàng)建位圖畫刷。</p><p>  CTime curtime = CTime::GetCurrentTime();//同步系統(tǒng)時間。</p><p> 

19、 m_hour = curtime.GetHour();</p><p>  m_minute = curtime.GetMinute();</p><p>  m_second = curtime.GetSecond();</p><p>  flag=0;//時鐘正常工作狀態(tài)</p><p>  flag2=1;//倒計時無效;</

20、p><p><b>  hour=-1;</b></p><p>  minute=-1;</p><p><b>  set=0;</b></p><p><b>  }</b></p><p> ?。?)//ondraw()函數(shù)進行繪制</p>

21、;<p>  void CShejiView::OnDraw(CDC* pDC)</p><p><b>  {</b></p><p>  CShejiDoc* pDoc = GetDocument();</p><p>  ASSERT_VALID(pDoc);</p><p>  // TODO: a

22、dd draw code for native data here</p><p>  CRect rect;</p><p>  GetClientRect(rect);///取得客戶區(qū)域</p><p>  pDC->FillRect(rect,&m_brushBackground); ///用背景畫刷填充區(qū)域,而我們在mbrushbackgrou

23、nd里加載了位圖,所以理所當然就變成了我們設(shè)置的圖片</p><p>  //畫表盤,標注刻度</p><p>  CRect client;</p><p>  GetClientRect(&client);</p><p>  int centerX = client.Width()/2;</p><p>

24、  int centerY = client.Height()/2;</p><p>  int clockRadius = centerX > centerY ? centerY : centerX;//用較小的一個作為鐘表的半徑,避免半徑太大矩形放不開</p><p>  clockRadius = clockRadius * 0.9;</p><p> 

25、 int keduDRadius = clockRadius * 0.85;</p><p>  int keduXRadius = clockRadius * 0.95;</p><p>  int hourRadius = clockRadius * 0.3;//時針半徑</p><p>  int minuteRadius = clockRadius * 0.

26、5;//分針半徑</p><p>  int secondRadius = clockRadius * 0.7;//秒針半徑</p><p>  //CPen clockPen(PS_SOLID, 2, RGB(0,0,255));</p><p>  CPen clockPen(PS_SOLID, 2, bpcolor);//配合下面的執(zhí)行代碼,使用自己定義的畫筆

27、來設(shè)置表盤的顏色</p><p>  CPen * oldPen = pDC->SelectObject(&clockPen);//恢復到原來的畫筆</p><p><b>  //標注刻度</b></p><p>  for(int i = 0; i< 12; i++)</p><p><b&

28、gt;  {</b></p><p>  pDC->MoveTo(centerX + keduDRadius * cos(i * 30 * PI / 180),</p><p>  centerY + keduDRadius * sin(i * 30 * PI / 180));</p><p>  pDC->LineTo(centerX

29、+ clockRadius * cos(i * 30 * PI / 180),</p><p>  centerY + clockRadius * sin(i * 30 * PI / 180));</p><p><b>  }</b></p><p>  for(int j = 0; j< 60; j++)</p>&

30、lt;p><b>  {</b></p><p>  pDC->MoveTo(centerX + keduXRadius * cos(j * 6 * PI / 180),//keduxradius是0.95,更加接近圓周,所以比起時針當然理所當然的更短</p><p>  centerY + keduXRadius * sin(j * 6 * PI /

31、 180));</p><p>  pDC->LineTo(centerX + clockRadius * cos(j * 6 * PI / 180),</p><p>  centerY + clockRadius * sin(j * 6 * PI / 180));</p><p><b>  }</b></p>&l

32、t;p>  pDC->SelectObject(oldPen);</p><p>  //調(diào)節(jié)時,分,秒針角度顯示的關(guān)系</p><p>  double secondRadians = m_second * 2 * PI / 60;//一個圓周是2pi,共有60秒,所以一秒是左邊這個表達式,用的是弧度值</p><p>  double mi

33、nuteRadians = m_minute * 2 * PI / 60 + secondRadians / 60;//秒針每動一格,其效果等同于分針動1/60格</p><p>  double hourRadians = m_hour * 2 * PI / 12 + minuteRadians*5 / 60; </p><p>  //依照所計算的角度畫出時,分,秒針</p>

34、;<p>  //CPen secondPen(PS_SOLID, 2, RGB(0,255,0));</p><p>  CPen secondPen(PS_SOLID,2,secondcolor);</p><p>  oldPen = pDC->SelectObject(&secondPen);</p><p>  pDC->

35、MoveTo(centerX , centerY);//時針的起點在中心</p><p>  pDC->LineTo(centerX + double(secondRadius) * sin(secondRadians),</p><p>  centerY - double(secondRadius) * cos(secondRadians));</p><p&

36、gt;  pDC->SelectObject(oldPen);</p><p>  //CPen minutePen(PS_SOLID, 4, RGB(255,255,0));</p><p>  CPen minutePen(PS_SOLID, 4, minutecolor);</p><p>  oldPen = pDC->SelectObject(

37、&minutePen);</p><p>  pDC->MoveTo(centerX , centerY);</p><p>  pDC->LineTo(centerX + double(minuteRadius) * sin(minuteRadians),</p><p>  centerY - double(minuteRadius) * c

38、os(minuteRadians));</p><p>  pDC->SelectObject(oldPen);</p><p>  //CPen hourPen(PS_SOLID, 8, RGB(255,0,255));</p><p>  CPen hourPen(PS_SOLID,8,hourcolor);</p><p>  o

39、ldPen = pDC->SelectObject(&hourPen);</p><p>  pDC->MoveTo(centerX , centerY);</p><p>  pDC->LineTo(centerX + double(hourRadius) * sin(hourRadians),</p><p>  centerY - d

40、ouble(hourRadius) * cos(hourRadians));</p><p>  pDC->SelectObject(oldPen);</p><p><b>  //畫表盤中心</b></p><p>  CBrush abrush(RGB(255,0,0));</p><p>  CBrush

41、* oldbrush = pDC->SelectObject(&abrush);</p><p>  pDC->Ellipse(centerX - 8, centerY - 8 , centerX +8, centerY +8);//最左是圓心減8,最右是圓心加8</p><p>  pDC->SelectObject(oldbrush);</p>

42、<p>  //定義數(shù)字時鐘的位置,顯示當前時間</p><p>  CRect dianzibiao(centerX-52,centerY*6/15, centerX+52,centerY);</p><p>  CString shijian;</p><p>  char temp1[3], temp2[3], temp3[3];</p>

43、<p>  itoa(m_hour, temp1, 10);</p><p>  itoa(m_minute, temp2, 10);//ITOA功能,把一整書轉(zhuǎn)換為字符串,10進制</p><p>  itoa(m_second, temp3, 10);</p><p>  shijian.Insert(0, temp1);//temp1用來保存小時

44、,temp2用來保存分鐘,temp3用來保存秒</p><p>  shijian += ":";//時和分之間的帽號</p><p>  if(m_minute < 10)</p><p><b>  {</b></p><p>  shijian += "0";//如果分

45、鐘小于10,則在前面加上字符“0”,以用來顯示 “07”、“08”之類的形式</p><p><b>  }</b></p><p>  shijian += temp2;</p><p>  shijian += ":";</p><p>  if(m_second < 10)</p&g

46、t;<p><b>  {</b></p><p>  shijian += "0";//同理</p><p><b>  }</b></p><p>  shijian += temp3;</p><p>  //完成數(shù)字時鐘顯示當前時間</p>&

47、lt;p>  pDC->SetBkMode (TRANSPARENT);</p><p>  pDC->SetTextColor(RGB(255,0,0)); </p><p>  pDC->DrawText(shijian,&dianzibiao,DT_CENTER);//dianzibiao是一個矩形,shijian是我們轉(zhuǎn)換后的cstring類型<

48、;/p><p>  //設(shè)置文本的字體大小,顏色</p><p>  CString b("指針式時鐘--陳慶敬");</p><p>  CFont abc;</p><p>  abc.CreateFont(15, // nHeight</p><p>

49、  0, // nWidth</p><p>  0, // nEscapement</p><p>  0, // nOrientation</p><p>  FW_ULTRABOLD, /

50、/ nWeight</p><p>  FALSE, // bItalic</p><p>  FALSE, // bUnderline</p><p>  0, // cStrikeOut</p><p>  AN

51、SI_CHARSET, // nCharSet</p><p>  OUT_DEFAULT_PRECIS, // nOutPrecision</p><p>  CLIP_DEFAULT_PRECIS, // nClipPrecision</p><p>  DEFAULT_QUALITY, /

52、/ nQuality</p><p>  DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily</p><p>  b); // lpszFacename</p><p>  CFont * oldFont = pDC->SelectObject(&abc);</p>

53、<p>  pDC->SetTextColor(RGB(255,0,0));</p><p>  CRect rectText1(centerX-52,centerY*3/2, centerX+52,centerY*2);</p><p>  pDC->DrawText(b, &rectText1, DT_CENTER);</p><p&g

54、t;  CString c("12");</p><p>  CRect rectText2(centerX-8,centerY-keduDRadius*10/9+10, centerX+8,centerY-(keduDRadius*10/9-14)+10);</p><p>  pDC->SetTextColor(RGB(255,0,0)); </p>

55、;<p>  pDC->DrawText(c, &rectText2, DT_CENTER);</p><p>  CString d("6");</p><p>  CRect rectText3(centerX-5,centerY+(keduDRadius*10/9-14-10), centerX+5,centerY+keduDRadiu

56、s*10/9-10);</p><p>  pDC->DrawText(d, &rectText3, DT_CENTER);</p><p>  CString e("9");</p><p>  CRect rectText4(centerX-(keduDRadius*10/9-14)+10,centerY-7, centerX-

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

58、,centerY-7, centerX+keduDRadius*10/9-10,centerY+7);</p><p>  pDC->DrawText(f, &rectText5, DT_CENTER);</p><p>  pDC->SelectObject(oldFont);</p><p>  //若定時時間到則提醒“時間到”</p&

59、gt;<p>  if((m_hour==hour)&&(m_minute==minute)&&(set==0))</p><p><b>  {</b></p><p>  PlaySound((LPCTSTR)IDR_WAVE1, AfxGetInstanceHandle(), SND_RESOURCE | SND_A

60、SYNC);//播放插入的格式為wav的音樂文件</p><p><b>  set=1;</b></p><p>  //這個函數(shù)使你能夠獲得當前應(yīng)用程序的實例句柄。AfxGetInstanceHandle總是//返回代表你的可執(zhí)行文件(.EXE)的HINSTANCE值,除非它從與MFC的USRDLL</p><p>  //版本連接的DLL

61、內(nèi)調(diào)用的。在這種情況下,它返回的是DLL的HINSTANCE值。</p><p><b>  }</b></p><p>  //如果要求時鐘暫停,則不調(diào)用OnTimer函數(shù)</p><p>  if(flag&&flag2)</p><p><b>  return;</b><

62、;/p><p>  //調(diào)用OnTimer函數(shù)</p><p>  SetTimer(1,1000,NULL);//每1000毫秒產(chǎn)生一個消息,在ontimer函數(shù)里編輯相應(yīng)的//響應(yīng)代碼</p><p><b>  }</b></p><p> ?。?): //工作狀態(tài)設(shè)定</p><p>  vo

63、id CShejiView::OnBegin() //開始運行</p><p><b>  {</b></p><p>  // TODO: Add your command handler code here</p><p>  flag=0;//0為正常,表示時鐘正常運行</p><p>  flag2=1;//1為

64、不正常,表示此時倒計時不工作</p><p>  Invalidate();</p><p><b>  }</b></p><p>  void CShejiView::OnPause() //暫停運行</p><p><b>  {</b></p><p>  // TO

65、DO: Add your command handler code here</p><p><b>  flag=1;</b></p><p><b>  flag2=1;</b></p><p>  KillTimer(1);//KillTimer:移除定時器函數(shù)的聲明:移除先前用SetTimer設(shè)置的定時器。在定時器

66、使用完畢后移除定時器時使用</p><p>  Invalidate();</p><p><b>  }</b></p><p>  void CShejiView::OnSetback() //倒計時功能</p><p><b>  {</b></p><p>  //

67、TODO: Add your command handler code here</p><p>  Csetback dia;</p><p>  if(dia.DoModal()==IDOK)//如果點擊"確認“(IDOK)之后,用輸入的時間來代替系統(tǒng)本來的時間</p><p><b>  {</b></p><

68、;p>  m_hour=dia.m_hour;</p><p>  m_minute=dia.m_minute;</p><p>  m_second=dia.m_second;</p><p><b>  flag2=0;</b></p><p><b>  }</b></p>

69、<p><b>  flag=1;</b></p><p>  Invalidate();//InvalidateRect只是增加重繪區(qū)域,在下次WM_PAINT的時候才生效//InvalidateRect函數(shù)中的參數(shù)TRUE表示系統(tǒng)會在你畫之前用背景色將所選區(qū)域覆蓋一//次,默認背景色為白色,可以通過設(shè)置BRUSH來改變背景色。</p><p><

70、b>  }</b></p><p>  void CShejiView::OnSettimer() //鬧鐘功能</p><p><b>  {</b></p><p>  // TODO: Add your command handler code here</p><p>  Cmydialog m

71、d;</p><p>  md.m_shour=hour;</p><p>  md.m_sminute=minute;</p><p>  UpdateData(false);</p><p>  if(md.DoModal()==IDOK)//如果Updatedata(TRUE),將控件的值賦值給成員變</p><p&

72、gt;  //量;Updatedata(FALSE),將成員變量的值賦值給控件;</p><p><b>  {</b></p><p>  UpdateData(true);</p><p>  hour=md.m_shour;</p><p>  minute=md.m_sminute;</p>&l

73、t;p><b>  set=0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p> ?。?)://對時鐘消息進行響應(yīng)</p><p>  void CShejiView::OnTimer(UINT nIDEvent)

74、 //OnTimer()函數(shù)是響應(yīng)用SetTimer()函數(shù)設(shè)///定的時鐘發(fā)送的時鐘消息的。</p><p>  //為類添加WM_TIMER消息響應(yīng),會看到類中多了個OnTimer(UINT nIDEvent)。 </p><p>  //然后用SetTimer(1,1000,NULL)就行了。第一個參數(shù)是ID,第二個是間隔時間,單位</p><p>  //是

75、毫秒,第3個是響應(yīng)函數(shù),因為要在OnTimer(UINT nIDEvent)里面做響應(yīng)操作,所//以此處給個NULL就行了。</p><p><b>  {</b></p><p>  // TODO: Add your message handler code here and/or call default</p><p>  //若為時鐘

76、狀態(tài)則獲取系統(tǒng)當前時間</p><p>  if(flag==0)</p><p><b>  {</b></p><p>  CTime curtime = CTime::GetCurrentTime();</p><p>  m_hour = curtime.GetHour();</p><p&g

77、t;  m_minute = curtime.GetMinute();</p><p>  m_second = curtime.GetSecond();</p><p><b>  }</b></p><p>  //若為倒計時狀態(tài)則判斷是否倒計時結(jié)束</p><p>  if(flag2==0) </p>

78、<p><b>  {</b></p><p>  if(m_second||m_minute||m_hour)//如果時、分、秒不同時為零,則進行倒計時</p><p><b>  {</b></p><p>  if(m_second==0)//如果在時分秒不同時為零的情況下,秒為零,那么秒向//分借6

79、0秒,如果此時分也恰好為零,則同時向時借60分,因為被秒借去60秒,所</p><p>  //以分為59,hour減1</p><p>  {m_second=60;</p><p>  if(m_minute==0)</p><p><b>  {</b></p><p>  m_minut

80、e=59;</p><p><b>  m_hour--;</b></p><p><b>  }</b></p><p><b>  else</b></p><p>  m_minute--;</p><p><b>  }</b&g

81、t;</p><p>  m_second--;</p><p><b>  }</b></p><p><b>  else </b></p><p><b>  {</b></p><p>  AfxMessageBox("倒計時時間到&q

82、uot;);</p><p><b>  flag2=1;</b></p><p>  KillTimer(1);</p><p><b>  }</b></p><p><b>  }</b></p><p>  Invalidate();</p

83、><p>  CView::OnTimer(nIDEvent);</p><p><b>  }</b></p><p>  (5)://設(shè)置表盤顏色</p><p>  void CShejiView::OnBpcolor() </p><p><b>  {</b></

84、p><p>  // TODO: Add your command handler code here</p><p>  CColorDialog ColorDlg; //創(chuàng)建調(diào)色板對象</p><p>  ColorDlg.m_cc.Flags|=CC_FULLOPEN;</p><p>  if(IDOK == ColorDlg.DoMod

85、al()) //將調(diào)色板實例化</p><p><b>  {</b></p><p>  bpcolor= ColorDlg.GetColor(); //獲取選中的顏色</p><p><b>  }</b></p><p><b>  }</b></p>&l

86、t;p>  void CShejiView::OnHourcolor()//設(shè)置時針顏色 </p><p><b>  {</b></p><p>  // TODO: Add your command handler code here</p><p>  CColorDialog ColorDlg; //創(chuàng)建調(diào)色板對象</p&g

87、t;<p>  ColorDlg.m_cc.Flags|=CC_FULLOPEN;</p><p>  if(IDOK == ColorDlg.DoModal()) //將調(diào)色板實例化</p><p><b>  {</b></p><p>  hourcolor= ColorDlg.GetColor(); //獲取選中的顏色&l

88、t;/p><p><b>  }</b></p><p><b>  }</b></p><p>  void CShejiView::OnMinutecolor() //設(shè)置分針顏色</p><p><b>  {</b></p><p>  // TOD

89、O: Add your command handler code here</p><p>  CColorDialog ColorDlg; //創(chuàng)建調(diào)色板對象</p><p>  ColorDlg.m_cc.Flags|=CC_FULLOPEN;</p><p>  if(IDOK == ColorDlg.DoModal()) //將調(diào)色板實例化</p>

90、;<p><b>  {</b></p><p>  minutecolor= ColorDlg.GetColor(); //獲取選中的顏色</p><p><b>  }</b></p><p><b>  }</b></p><p>  void CSheji

91、View::OnSecondcolor() //設(shè)置秒針顏色</p><p><b>  {</b></p><p>  // TODO: Add your command handler code here</p><p>  CColorDialog ColorDlg; //創(chuàng)建調(diào)色板對象</p><p>  Col

92、orDlg.m_cc.Flags|=CC_FULLOPEN;</p><p>  if(IDOK == ColorDlg.DoModal()) //將調(diào)色板實例化</p><p><b>  {</b></p><p>  secondcolor= ColorDlg.GetColor(); //獲取選中的顏色</p><p&

93、gt;<b>  }</b></p><p><b>  }</b></p><p><b>  七、體會與自我評價</b></p><p>  本次課程設(shè)計選擇的是指針式時鐘,主要是出于自己的興趣愛好。由于自己才疏學淺,開始的表盤繪制就很是頭疼,但是通過查詢資料、請教別人以及自己的認真思考,終于明白

94、了表盤及刻度繪制的原理。刻度計算起來并不是特別難,主要是一些幾何上的知識以及三角函數(shù)方面的內(nèi)容,但由于對MFC并不是很了解,因此在這個地方停留了很長時間。不過有一些同學對MFC已經(jīng)有了不錯的掌握,所以在他們的指導和幫助下對MFC有了一些了解。程序設(shè)計過程中最大的困難就是對于MFC中的函數(shù)了解不夠,不能融會貫通的拿來運用,通過Google搜索引擎的查詢給自己提供了很大的幫助。通過此次課程設(shè)計使我深刻了解到了日常知識積累的重要性。書到用時方

95、恨少,在以后的學習中一定要吸取經(jīng)驗,學好基礎(chǔ)知識并努力開闊視野。同時通過此次課程設(shè)計,對于設(shè)計可視化窗口的程序有了更好的了解,也激發(fā)了自己對可視化窗口程序設(shè)計的興趣。而且通過這次課程設(shè)計,使自己對課本上的東西有了更好的掌握,對課程內(nèi)容的了解更加深刻,受益匪淺。</p><p>  而且通過本次課程設(shè)計更加意識到提高編程能力關(guān)鍵是要多多實踐,讀書是為寫代碼打基礎(chǔ),但只讀書不敲代碼是不可能提高實際的編程能力的。只有多

96、讀源碼、多寫代碼、多思考才能對知識有更加深刻的了解。</p><p>  在編程期間,遇到了很多困難,老師提供了很多的指導和幫助。對老師表示由衷的感謝。</p><p><b>  八、參考文獻:</b></p><p>  [1]侯俊杰,《深入淺出 MFC (第 2 版)》.湖北:華中科技大學出版社, 2001.7</p>&l

溫馨提示

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

評論

0/150

提交評論