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

正文內(nèi)容

c++課程設(shè)計(jì)---用vc++制作多功能計(jì)算器-文庫(kù)吧

2025-04-17 19:17 本頁(yè)面


【正文】 ID_EXTEND 的響應(yīng)函數(shù) OnExtend。 4 系統(tǒng)的實(shí)現(xiàn) 窗體設(shè)計(jì) 利用 MFC AppWinzard 生成計(jì)算 器應(yīng)用程序框架具體步驟如下: (1)執(zhí)行 VC 程序,選擇 File|New 命令,彈出 New 對(duì)話框 .單擊 Projects 標(biāo)簽,轉(zhuǎn)到 Projects 選項(xiàng)卡,選擇 MFC AppWizard(exe)選項(xiàng),然后在 Project name 文本框中輸入 Calculator 。 Lacation 文本框是指項(xiàng)目的本地路徑。 (2)單擊 OK 按鈕,彈出 MFC AppWinzard_Step1 對(duì)話框。選中單選按鈕,如圖所示。 (3)單擊 Next 按鈕,彈出 MFC AppWinzard_Step2 of4 對(duì)話框,如圖所示。 (4)單擊 Next 按鈕,彈出 MFC AppWinzard_Step3 of4 對(duì)話框,如圖所示。 (5)單擊 Next 按鈕,彈出 MFC AppWinzard_Step4 of4 對(duì)話框,如圖所示。單擊 Finish 按鈕,創(chuàng)建框架。 編輯資源 (1)編輯對(duì)話框及控件資源 利用 Visual C++提供的資源編輯器對(duì)對(duì)話框資源進(jìn)行編輯。刪除對(duì)話框中默認(rèn)的 OK 和 Cancel 按鈕。添加一個(gè)Edit 控件,其控件 ID 為 IDC_DSPEDIT。添加若干按鈕控件,其 ID 如表 41 所示。 表 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 。 BTN_10 小數(shù)點(diǎn) = BTN_11 求值 + BTN_12 加號(hào) BTN_13 減號(hào) * BTN_14 乘號(hào) / BTN_15 除號(hào) CE BTN_16 清屏 Sqrt BTN_17 開(kāi)方 1/x BTN_18 倒數(shù) sin BTN_19 正弦 cos BTN_20 余弦 tan BTN_21 正切 x^2 BTN_22 平方 x^3 BTN_23 立方 x^y BTN_24 以 X 為底的 y 次冪 exp BTN_25 以 e 為底的冪 ln BTN_26 以 e 為底的對(duì)數(shù) log BTN_27 對(duì)數(shù) /+ BTN_29 正負(fù)號(hào) 10^x BTN_30 10 的 x 次方 n! BTN_31 N 的階層 添加 2 個(gè)單選按鈕,按鈕資源清單如下 表 42 單選按鈕控件資源清單 控件名 設(shè)置 ID DEGREE BTN_DEGREE RADIAN BTN_RAD 添加 4 個(gè)靜態(tài)框,將編輯控件,普通計(jì)算,高級(jí)計(jì)算分別分組。其效果如圖 41 所示。 圖 41 編輯對(duì)話框資源 (2)編輯菜單資源 在 Visual C++中的 Workspace 工具欄中,選中 ResourceView 選項(xiàng)卡。在其中的 Menu 項(xiàng)上右擊,在彈出的快捷菜單中選擇 Insert 命令,如圖 42 所示。 圖 42 添加菜單資源 將添加的菜單資源 的 ID 更改為 IDR_MENU。利用資源編輯器對(duì)菜單進(jìn)行編輯,編輯后的菜單如圖 43 所示。 圖 43 編輯菜單資 源 實(shí)現(xiàn)高級(jí)按鈕控件類 利用 ClassWizard 添加一個(gè)新類 ,如圖 45 所示。 圖 45 添加 CAdvButton 類 (1)添加成員變量和成員函數(shù) 為實(shí)現(xiàn)高級(jí)按鈕控件對(duì)鼠標(biāo)的移動(dòng)和單擊作出相應(yīng)的顏色變化。首先在 CAdvButton 的頭文件中加入幾種預(yù)定義顏色,其代碼如下: define DesiableColor RGB(192,192,192) //灰色 , 按鈕不可用 define FocusColor RGB(255,0,0) //紅色 , 按鈕擁有焦點(diǎn) define SelectColor RGB(0,255,0) //綠色 , 按鈕被按下 define DefaultColor RGB(0,0,255) //藍(lán)色 , 默認(rèn) define TextColor RGB(128,128,128) //淺灰色 , 文本顏色 接下來(lái),添加成員變量: public: CRect m_ClientRect。 //用來(lái)保存按鈕的客戶的矩形區(qū)域 CRgn m_ClientRgn 。 //用來(lái)保存按鈕的客戶區(qū)域 ,非矩形 UINT m_State。 //按鈕所處狀態(tài) CPoint m_Point。 //當(dāng)前鼠標(biāo)位置 BOOL m_IsTimerOn。 //標(biāo)識(shí)計(jì)時(shí)器是否已經(jīng)打開(kāi) 利用 ClassWizard 添加消息映射和響應(yīng)函數(shù): 圖 46 添加響應(yīng)函數(shù) 再利用 ClassWizard 覆蓋父類中的兩個(gè)關(guān)鍵的虛函數(shù): //{{AFX_VIRTUAL(CAdvButton) public: virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)。 protected: virtual void PreSubclassWindow()。 //}}AFX_VIRTUAL 其中對(duì)于所有的對(duì)于按鈕的繪制工作都是在 DrawItem 函數(shù)中完成的。 (2)添加創(chuàng)建按鈕控件代碼 按鈕的創(chuàng)建分兩步完成。首先,調(diào)用構(gòu)造函數(shù)對(duì)按鈕對(duì)象進(jìn)行初始化;其次,調(diào)用 Create 函數(shù)創(chuàng)建按鈕。代碼如附錄 1 所示。 (3)設(shè)置按鈕形狀、外觀、顏色、標(biāo)題 PreSubclassWindow 函數(shù)在窗口被創(chuàng)建之前就被調(diào)用,因此,在 PreSubclassWindow 函數(shù)中,將按鈕的風(fēng)格設(shè)為BS_OWNERDRAW。實(shí)現(xiàn)代碼如下: //修改按鈕控件風(fēng)格 ModifyStyle(0,BS_OWNERDRAW|BS_PUSHBUTTON); 要使按鈕能對(duì)鼠標(biāo)的移動(dòng)與單擊作出不同的變化,那么按鈕就需要時(shí)刻知道鼠標(biāo)的位置與動(dòng)作。所以,必須在鼠標(biāo)的單擊、彈起及移動(dòng)消息的響應(yīng)函數(shù)中填加相應(yīng)的代碼,以獲取鼠標(biāo)的位置與動(dòng)作。 在鼠標(biāo)左鍵按下時(shí),得到按鈕窗口客戶區(qū)域的屏幕坐標(biāo)位置和鼠標(biāo)的屏幕坐標(biāo)位置。當(dāng)鼠標(biāo)坐標(biāo)位落于窗口客戶區(qū)域內(nèi),且當(dāng)前按鈕控件處于非選中狀態(tài)時(shí),將按鈕狀態(tài)標(biāo)識(shí)設(shè)為選中狀態(tài),即將 m_State 設(shè)為 2。接著,調(diào)用Invalidate 函數(shù),使客戶區(qū)無(wú)效,框架會(huì)自動(dòng)調(diào)用 DrawItem 函數(shù),重繪客戶區(qū)。實(shí)現(xiàn)代碼如下: //當(dāng)鼠標(biāo)在按鈕的客戶區(qū)內(nèi)按下時(shí) ,改變按鈕狀態(tài) void CAdvButton::OnLButtonDown(UINT nFlags, CPoint point) { CRect rect。 GetWindowRect(amp。rect)。 //得到按鈕客戶區(qū)域的屏幕坐標(biāo)位置 GetCursorPos(amp。m_Point)。 //得到鼠標(biāo)的屏幕坐標(biāo)位置 if(((m_Point))amp。amp。(m_State != 2)) { m_State = 2。 //2:select state Invalidate()。 //重繪客戶區(qū) } CButton::OnLButtonDown(nFlags, point)。 } 在鼠標(biāo)左鍵抬起時(shí),得到按鈕窗口客戶區(qū)域的屏幕坐標(biāo)位置和鼠標(biāo)的屏幕坐標(biāo)位置。當(dāng)鼠標(biāo)坐標(biāo)位置落于窗口客戶區(qū)域內(nèi),且當(dāng)前按鈕控件處于選中狀態(tài)時(shí),將按鈕狀態(tài)標(biāo)識(shí)設(shè)為非選中狀態(tài),即將 m_State 設(shè)為 1。接著,調(diào)用Invalidate 函數(shù),使客區(qū)無(wú)效,框架會(huì)自動(dòng)調(diào)用 DrawItem 函數(shù),重繪客戶區(qū)。其代碼如附錄 1 所示。 在用戶移動(dòng)鼠標(biāo)時(shí),如果計(jì)時(shí)器沒(méi)有啟動(dòng),則啟動(dòng)計(jì)時(shí)器,并將計(jì)時(shí)器啟動(dòng)標(biāo)識(shí) m_IsTimerOn 設(shè)為 TRUE。其實(shí)現(xiàn)代碼如下: if(!m_IsTimerOn) //如果計(jì)時(shí)器沒(méi)用啟動(dòng) { SetTimer(1000,100,NULL)。 //啟動(dòng)計(jì)時(shí)器 m_IsTimerOn = TRUE。 } 如果鼠標(biāo)已經(jīng)移出了按鈕的客戶區(qū),則消毀計(jì)時(shí)器,并將計(jì)時(shí)器的起始標(biāo)識(shí) m_IsTimerOn 設(shè)為 FALSE。 OnTimer 函數(shù)的實(shí)現(xiàn)代碼如附錄 1 所示。 實(shí)現(xiàn)客戶區(qū)的 繪置函數(shù) DrawItem。在 DrawItem 函數(shù)中,首先得到窗口的有效矩形區(qū)域,在此矩形區(qū)域內(nèi)創(chuàng)建橢圓。調(diào)用 SetWindowRgn 函數(shù),設(shè)置窗口的有效區(qū)域?yàn)闄E圓。從參數(shù) lpDrawItemStruct 結(jié)構(gòu)中得到按鈕控件客戶區(qū)域的設(shè)備環(huán)境變量指針。根據(jù)按鈕當(dāng)前狀態(tài),創(chuàng)建不同的畫筆。調(diào)用設(shè)備環(huán)境類的成員函數(shù),設(shè)置背景模式為透明,選擇畫筆,在按鈕客戶區(qū)內(nèi)繪制橢圓及顯示文本。其實(shí)現(xiàn)代碼如附錄 1 所示。 通過(guò)上面操作,按鈕已經(jīng)具有對(duì)鼠標(biāo)不同的位置和動(dòng)作改變不同的顏色。并且,按鈕的客戶區(qū)域已經(jīng)是一個(gè)橢圓,而不再是一個(gè)矩 形。正是下面的代碼將按鈕的客戶區(qū)域設(shè)定為橢圓形: GetClientRect(amp。m_ClientRect)。 //通到窗口的有效矩形區(qū)域 ()。 //刪除區(qū)域?qū)ο? (amp。m_ClientRect)。 //在矩形區(qū)域內(nèi)創(chuàng)建橢圓 //設(shè)置窗口的有效區(qū)域?yàn)闄E圓 SetWindowRgn(m_ClientRgn,FALSE)。 至此,一個(gè)完整的高級(jí)按鈕類全部完成。其效果如圖 47 所示。 圖 47 運(yùn)行結(jié)果 實(shí)現(xiàn)高級(jí)編輯控件類 利用 ClassWizard 添加一個(gè)新類 ,如圖 48 所示 . 圖 48 添加 CAdvEdit (1)添加成員變量和成員函數(shù) 為 CAdvEdit 類添加一個(gè)字符串類型的成員變量 m_Caption,用來(lái)記錄編輯框中的文本內(nèi)容。其實(shí)現(xiàn)代碼如下: //CAdvEdit 頭文件 public: CString m_Caption。 //編輯框文本 利用 AppWizard 添加消息函數(shù) OnPaint。如圖 49 所示。 圖 49 添加函數(shù) 添加兩個(gè) public 類型的成員函數(shù),分別用來(lái)繪制編輯控件客戶區(qū)和設(shè)置編輯控件的顯示文本。實(shí)現(xiàn)代碼如下: public: void OnDraw()。 //繪制編輯控件客戶區(qū) v
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1