freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

c課程設(shè)計---用vc制作多功能計算器-在線瀏覽

2024-07-24 19:17本頁面
  

【正文】 項,然后在 Project name 文本框中輸入 Calculator 。 (2)單擊 OK 按鈕,彈出 MFC AppWinzard_Step1 對話框。 (3)單擊 Next 按鈕,彈出 MFC AppWinzard_Step2 of4 對話框,如圖所示。 (5)單擊 Next 按鈕,彈出 MFC AppWinzard_Step4 of4 對話框,如圖所示。 編輯資源 (1)編輯對話框及控件資源 利用 Visual C++提供的資源編輯器對對話框資源進行編輯。添加一個Edit 控件,其控件 ID 為 IDC_DSPEDIT。 表 41 按鈕控件資源清單 按鈕名稱 按鈕 ID 用途 0 BTN_0 按鍵 0 1 BTN_1 按鍵 1 2 BTN_2 按鍵 2 3 BTN_3 按鍵 3 4 BTN_4 按鍵 4 5 BTN_5 按鍵 5 6 BTN_6 按鍵 6 7 BTN_7 按鍵 7 8 BTN_8 按鍵 8 9 BTN_9 按鍵 9 。其效果如圖 41 所示。在其中的 Menu 項上右擊,在彈出的快捷菜單中選擇 Insert 命令,如圖 42 所示。利用資源編輯器對菜單進行編輯,編輯后的菜單如圖 43 所示。 圖 45 添加 CAdvButton 類 (1)添加成員變量和成員函數(shù) 為實現(xiàn)高級按鈕控件對鼠標的移動和單擊作出相應(yīng)的顏色變化。 //用來保存按鈕的客戶的矩形區(qū)域 CRgn m_ClientRgn 。 //按鈕所處狀態(tài) CPoint m_Point。 //標識計時器是否已經(jīng)打開 利用 ClassWizard 添加消息映射和響應(yīng)函數(shù): 圖 46 添加響應(yīng)函數(shù) 再利用 ClassWizard 覆蓋父類中的兩個關(guān)鍵的虛函數(shù): //{{AFX_VIRTUAL(CAdvButton) public: virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)。 //}}AFX_VIRTUAL 其中對于所有的對于按鈕的繪制工作都是在 DrawItem 函數(shù)中完成的。首先,調(diào)用構(gòu)造函數(shù)對按鈕對象進行初始化;其次,調(diào)用 Create 函數(shù)創(chuàng)建按鈕。 (3)設(shè)置按鈕形狀、外觀、顏色、標題 PreSubclassWindow 函數(shù)在窗口被創(chuàng)建之前就被調(diào)用,因此,在 PreSubclassWindow 函數(shù)中,將按鈕的風(fēng)格設(shè)為BS_OWNERDRAW。所以,必須在鼠標的單擊、彈起及移動消息的響應(yīng)函數(shù)中填加相應(yīng)的代碼,以獲取鼠標的位置與動作。當(dāng)鼠標坐標位落于窗口客戶區(qū)域內(nèi),且當(dāng)前按鈕控件處于非選中狀態(tài)時,將按鈕狀態(tài)標識設(shè)為選中狀態(tài),即將 m_State 設(shè)為 2。實現(xiàn)代碼如下: //當(dāng)鼠標在按鈕的客戶區(qū)內(nèi)按下時 ,改變按鈕狀態(tài) void CAdvButton::OnLButtonDown(UINT nFlags, CPoint point) { CRect rect。rect)。m_Point)。amp。 //2:select state Invalidate()。 } 在鼠標左鍵抬起時,得到按鈕窗口客戶區(qū)域的屏幕坐標位置和鼠標的屏幕坐標位置。接著,調(diào)用Invalidate 函數(shù),使客區(qū)無效,框架會自動調(diào)用 DrawItem 函數(shù),重繪客戶區(qū)。 在用戶移動鼠標時,如果計時器沒有啟動,則啟動計時器,并將計時器啟動標識 m_IsTimerOn 設(shè)為 TRUE。 //啟動計時器 m_IsTimerOn = TRUE。 OnTimer 函數(shù)的實現(xiàn)代碼如附錄 1 所示。在 DrawItem 函數(shù)中,首先得到窗口的有效矩形區(qū)域,在此矩形區(qū)域內(nèi)創(chuàng)建橢圓。從參數(shù) lpDrawItemStruct 結(jié)構(gòu)中得到按鈕控件客戶區(qū)域的設(shè)備環(huán)境變量指針。調(diào)用設(shè)備環(huán)境類的成員函數(shù),設(shè)置背景模式為透明,選擇畫筆,在按鈕客戶區(qū)內(nèi)繪制橢圓及顯示文本。 通過上面操作,按鈕已經(jīng)具有對鼠標不同的位置和動作改變不同的顏色。正是下面的代碼將按鈕的客戶區(qū)域設(shè)定為橢圓形: GetClientRect(amp。 //通到窗口的有效矩形區(qū)域 ()。m_ClientRect)。 至此,一個完整的高級按鈕類全部完成。 圖 47 運行結(jié)果 實現(xiàn)高級編輯控件類 利用 ClassWizard 添加一個新類 ,如圖 48 所示 . 圖 48 添加 CAdvEdit (1)添加成員變量和成員函數(shù) 為 CAdvEdit 類添加一個字符串類型的成員變量 m_Caption,用來記錄編輯框中的文本內(nèi)容。 //編輯框文本 利用 AppWizard 添加消息函數(shù) OnPaint。 圖 49 添加函數(shù) 添加兩個 public 類型的成員函數(shù),分別用來繪制編輯控件客戶區(qū)和設(shè)置編輯控件的顯示文本。 //繪制編輯控件客戶區(qū) void OnDisplay(LPCTSTR lpszStr)。 //WM_ON_PAINT 消息的響應(yīng)函數(shù) //}}AFX_MSG 圖 410 添加成員變量 (2)添加編輯控件代碼 在 OnDisplay 函數(shù)中設(shè)置編輯框的顯示文本。 OnDraw()。實現(xiàn)代碼如下: CPaintDC dc(this)。 在 OnDraw 函數(shù)中,在編輯控件客戶區(qū)域內(nèi)繪制文本。效 果如圖 411 所示,其代碼如附錄 2 所示。 主要成員變量: // 頭文件 CButton m_DspStatic。 //顯示計算結(jié)果的編輯框 CMenu* m_Menu。 //標志對話框是否已擴展 主要成員函數(shù): // 頭文件 //{{AFX_VIRTUAL(CCalculatorDlg) Protected: virtual void DoDataExchange(CDataExchange*pDX)。//虛函數(shù),可覆蓋用來進行用戶初始化操作 virtual void OnOK()。 afx_msg void OnPaint()。//響應(yīng)消息 WM_ON_CREATE //}}AFX_MSG 除以上主要成員外,還要對每個按鈕控件定義一個 CAdvButton 的對象與之相關(guān)聯(lián) ,并為每個按鈕控件建軍立一個成員函數(shù)來響應(yīng)其 EN_CLICKED 消息。利用 CMenu 類的LoadMenu 函數(shù),將菜單資源加載到內(nèi)存中。如圖 413 所示: 圖 413 運行結(jié)果 (2)關(guān)聯(lián)控件與對象 在 CCalculatorDlg 類的聲明 中,已經(jīng)為編輯框、靜態(tài)框及每一個按鈕聲明了相應(yīng)類型的對象與之對應(yīng)。 圖 414 關(guān)聯(lián)控件與對象 (3)實現(xiàn)對話框擴展功能 首先在 CCalculatorDlg::OnCreate 函數(shù)中,設(shè)定對話框的初始大小與位置。 GetWindowRect(amp。 //得到對話框的窗口區(qū)域矩形 //指定窗口大小與位置 :寬為 186 像素 ,高度為 245 像素 SetWindowPos(amp。 其次,添加菜單項 ID_EXTEND 的響應(yīng)函數(shù) OnExtend。 如果對話框已被擴展,則收縮對話框。再將其中的編輯控件和編輯控件外的靜態(tài)框收縮到合理位置。 如果對話框為 非擴展,則擴展對話框。再將其中的編輯控件和編輯控件外的靜態(tài)框收縮到合理的位置。效果如圖 415 和 416 所示: 圖 415 擴展圖 圖 416 收縮圖 (4)屏蔽 Enter 鍵 直到現(xiàn)在為止,雖然計算器的界面已經(jīng)完成。這是因為對話框默認具有 焦點的控件是 OK 鍵,當(dāng) Enter 鍵按下時,框架會自動執(zhí)行當(dāng)前擁有焦點的控件的響應(yīng)函數(shù),所以對話框自然就關(guān)閉了。 void CCalculatorDlg::OnOK() { //CDialog::OnOK()。首先為工程添加一幅位圖資源,以作為對話框的背景。 圖 417 添加位圖 參數(shù)設(shè)置后對話框的外觀如圖 418 所示。該計算器中所有的運算都是二元運算,即需要兩個操作數(shù),一個二元運算操作符。還需要一個整形變量來記錄當(dāng)前運算符,以及一個整形變量來記錄當(dāng)前小數(shù)點按鈕是否被單擊過。//用來存貯需要顯示的數(shù)字 CString m_StrBegin。 // double m_end。//記錄初始操作數(shù) int m_bit。//判斷是否按下了小數(shù)點符號 ,當(dāng)其為 0 時,表示沒有按下 當(dāng)數(shù)字鍵 0— 9 被單擊時,則將當(dāng)前所按鍵加到初始操作數(shù)末尾,并將初始操作數(shù)顯示出來。 if (!m_IsCheckPoint) //如果小數(shù)點按下了 (m_StrBegin+.)。 當(dāng)小數(shù)點鍵被單擊時,首先判斷小數(shù)點鍵是否已經(jīng)被單擊過,以及當(dāng)前初始操作數(shù)字符串是否為空。實現(xiàn)代碼如下: if (!m_IsCheckPoint amp。 m_StrBegin != ) //如果小數(shù)點沒有按下 ,且字符不為空 { m_StrBegin = m_StrBegin+.。 //顯示文本 m_IsCheckPoint = true。清除小數(shù)點標識,將保存初始操作數(shù)和結(jié)果操作數(shù)的字符串清空,將保存初始操作數(shù)和結(jié)果操作數(shù)的浮點數(shù)清 0,將當(dāng)前操作符清 0。 //消除小數(shù)點按下標記 m_StrBegin = 。 //清 0 m_end = 。 //當(dāng)前操作符為無效操作 當(dāng)任何一個運算符鍵被單擊時,首先根據(jù)當(dāng)前運算符計算運算結(jié)果,再修改記錄當(dāng)前運算符的變量的值。 //計算運算結(jié)果 m_bit = 1。在 Result 中,首先將記錄當(dāng)前操作數(shù)的字符串中保存的字符串轉(zhuǎn)化為浮點數(shù);其次根據(jù)當(dāng)前操作符的類型,選擇適當(dāng)?shù)倪\算操作;再將記錄結(jié)果操作數(shù)的浮點變量中的值轉(zhuǎn)化為字 符串,并顯示在結(jié)果編輯框中。 5 程序結(jié)果的演示 測試的研究與選擇 測試過程中要判斷測試是否成功,要分析程序界面的變化和計算數(shù)據(jù)的結(jié)果是否正確以及各功能鍵是否能正常使用?!?的運行結(jié)果 最后,選中“弧度”輸入“ 15”單擊“ sin”觀察結(jié)果,見圖 53 所示 圖 53“ sin15” 的運行結(jié)果 結(jié)束語 經(jīng)過一個月的努力,課程設(shè)計基本完成了。課程設(shè)計是以一個計算器的實現(xiàn)為基礎(chǔ),掌握一個基于對話框的應(yīng)用程序的編程方法以及對話框常用控件的高級編程。在此期間,遇上了不少的技術(shù)難題,但是經(jīng)過努力 ,通過查找資料,難題還是一個個被解決了,我從中學(xué)到了許多課堂上沒學(xué)到的東西 ,這使得我很高興。
點擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1