




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Windows程序設計
實踐報告BY:08級空間信息與數字技術60020馬騰目錄TOC\o"1-5"\h\z\o"CurrentDocument"任務一:Windows消息循環機制及API程序設計實踐 3\o"CurrentDocument"一、 實踐目的 3\o"CurrentDocument"二、 任務概述 3\o"CurrentDocument"三、 windows消息循環 3\o"CurrentDocument"四、 學習收獲 3\o"CurrentDocument"任務二:基于MFC的對話框程序設計 4\o"CurrentDocument"一、 任務概述 4\o"CurrentDocument"二、 MFC消息映射 4\o"CurrentDocument"三、 計算器程序的設計思路 4\o"CurrentDocument"四、 遇到困難及解決 5\o"CurrentDocument"五、 關鍵代碼 5\o"CurrentDocument"六、運行情況 6\o"CurrentDocument"七、收獲 6\o"CurrentDocument"任務三:基于MFC的單文檔繪圖程序設計 7\o"CurrentDocument"一、 任務概述 7\o"CurrentDocument"二、 模塊設計及封裝 7\o"CurrentDocument"三、 設計的優點 8\o"CurrentDocument"四、 程序風格 8\o"CurrentDocument"五、 運行情況 8六、使用方式 9\o"CurrentDocument"七、困難及解決 12任務一:Windows消息循環機制及API程序設計實踐一、實踐目的通過實踐充分理解Windows的消息循環機制,了解Windows的API函數族的分類及大致功能,并在此基礎上了解基本WindowsAPI方式開發的窗口程序的基本過程。任何框架開發環境歸根結底都是對WindowsAPI函數的封裝與調用。在利用一個框架環境開發Windows程序的過程中,應該明白所使用的框架模塊調用了WindowsAPI中的那些功能函數。二、 任務概述用visualC++開發一個Win32窗口程序,并實現如下功能:實現菜單功能;點擊某兩個菜單可在主窗口中顯示或清除文字(文字內容不做要求);點擊某個菜單可彈出一個自定義的對話框(對話框中的元素不做要求),單擊對話框中的“確定”或“取消”按鈕,可結束對話框。三、 windows消息循環Windows多進程的窗口圖形操作系統與DOS操作系統最大的區別就是:DOS采用順序執行的過程,而Windows采用事件的消息驅動。用戶進行的鼠標操作,鍵盤輸入等操作和各個應用程序之間,應用程序和系統之間的操作都作為一個事件,產生消息,進入到指定的消息隊列中,等待取出進行處理。這打破了順序執行,而采用事件驅動的形式。四、學習收獲了解了Windows的消息循環機制了解了一個窗口程序的生存的始末,從窗口類的定義,注冊窗口類,創建窗口,到程序運行的消息循環的主函數。3?了解了句柄的概念,每個菜單項,窗口都有一個句柄作為自己的標示,作為消息的一部分,告訴系統處理哪個窗口,菜單項的消息。4.了解了一些簡單的API:CheckMenuItem,DialogBox等。5?了解了消息分類,處理消息的函數里,將消息分為了WM_COMMAND、WM_PAINT等分別處理窗口命令、窗口的繪制等消息。以及他們之間的關系。任務二:基于MFC的對話框程序設計一、任務概述用MFC開發一個計算器程序:對話框類型的程序;能夠實現浮點數值的加減乘除運算;界面由一個編輯框和若干按鈕組成,編輯框負責表達按鈕輸入及計算的結果,按鈕負責輸入數字、加減乘除以及等于等動作的輸入;程序的核心功能由標準C++方式實現,并通過MFC框架代碼調用其功能;二、MFC消息映射方法:在MFC的類庫中有些事繼承了CCmdTarget類的類,這些類和消息有關,可以處理消息。然后為每一個能處理消息的類建立一個消息映射表,就像一張MessageMap,將消息和表格中的元素比較,然后調用對應的處理程序,這種操作就叫消息映射。其中消息映射表的建立使用了幾個定義好的宏實現的。DECLARE_MESSAGE_MAP()BEGIN_MESSAGE_MAP(theClass,baseClass)ON_COMMAND(id,memberFxn)END_MESSAGE_MAP()來實現對DECLARE_MESSAGE_MAP定義的結構體的填寫。消息表條目就以ON_COMMAND(id,memberfxn)的格式宏定義不同類型的消息,其中對應消息的句柄,memberfxn表示消息引發的要處理的函數。將要實現的消息寫在BEGIN_MESSAGE_MAP與END_MESSAGE_MAP之間。然后再編寫消息實現的動作在對應的memberfxn函數中。優點:可以使代碼更有條理,要實現的具體功能函數寫在一個單獨的函數中。三、計算器程序的設計思路1?確定實現計算功能類的具體結構,需要的成員變量,成員函數等在MFC中實現計算器程序的UI為UI中的按鈕添加事件,并到調用C++功能類中的函數。調試程序,修改BUG四、遇到困難及解決對于小數點等符號的處理,輸入一個小數點后,不允許再輸入,用了一個textl的標識符進行判斷。其他符號的重復輸入等。也是利用了定義的變量進行控制texti和text2進行對加減乘除和等號的控制。五、關鍵代碼□classCore{private:doubleConstzrl;doubleConsintSymb;doubleresult;public:voidseiidSynib(iii二Syml?);vcidsendConatrl(char水Constrl);vcidsendConstr2@h已丫*Constr2};doubleCompute:public:''"Core(void):h功能類聲明的成員函數和屬性內容,其中constr1constr2分別儲存兩個操作數,symb儲存符號,result存結構。外部通過三個send開頭的函數傳遞參數。Compute是計算函數,其中通過一個switch判斷Symb是哪種類型,執行相應的計算語句。□voidCTask2Dlg::NumO^uttonO{//TODO:在此添加控件通知處理程序代碼strcat(Constr23丹0">;SetD1g11emText(IDC_STATIC7Constr2);實現了ui上的即使更新。3voidCTaskSDlg::SvmbAddO{"TODO:在此添加控件通知處理程序代碼while(TEXTI<l){thecore.sendCons.tfl(Constr2);thecore.sendSynib(l);毗rcpv(Cons;TEXTI—;TEXT2=0;TEXT1=0;在輸入符號時表示一個操作數的輸入完成,所以調用sendconstr方法把參數傳入。同時在輸入符號時要判斷,是否之前已經連續輸入過。通過text來控制。六、運行情況由于之前是按照實際的計算器來設計的,沒有參照windows里的計算器程序,所以沒有設計連乘,連減等功能。由于之前忘記了考慮負號的問題,所以之后的設計可以用減號來代替負號。七、收獲了解到了MFC中消息映射的實現機制,和如何寫消息實現的具體函數,如何修改消息映射表。通過這次的程序設計體會到了程序設計之初算法設計的重要性,由于之前沒有很好的考慮算法,以至于到后面的編寫,修改十分的困難,特別是在符號的重復輸入,用戶的異常處理這一方面,程序應有很大的改進。雖然很多的BGU最后克服了,但是代碼看起來很亂,使用的標識符有時自己也無法分辨。所以在以后的程序設計中一定會注意做好第一步的設計,不會再盲目的拿來題目就寫。爭取在設計之初就把所有可能出現的情況都考慮全面。任務三:基于MFC的單文檔繪圖程序設計一、任務概述用MFC開發一個單文檔的繪圖程序:通過鼠標左鍵的點擊在視圖中繪制不同的圖形,可繪制的圖形包括折線、多邊形,并且折線的線寬、顏色以及線形都是可以改變的,多邊形的填充方式也可以定制;繪制的圖形可以以保存為矢量(矢量格式自定義)文件,并且可以在程序中再次打開,矢量數據的線寬、線形、顏色以及填充模式都要保存在矢量數據文件中,重新打開的矢量數據文件應該是可以再次編輯、修改的。、模塊設計及封裝1?繪制模塊:包括動態繪制方法和繪制方法。其中動態繪制是實現鼠標移動期間的動態繪制。2.存儲模塊:包括存儲成.me文件和打開.me文件兩個方法。3?圖形文件格式:直線,橢圓,矩形等繪制均存儲兩個頂點的方式,折線。4?編輯模塊:包括畫筆寬度設置,畫筆顏色設置,畫刷顏色設置和撤銷。模塊的封裝:三、設計的優點1?繪制等函數都采用虛函數,對于不同的圖形實現各自獨特的繪制函數。這樣在就可以用Shape指針的數組來統一的存儲圖形,在繪制時動態的調用相對的函數。2?通過上邊的方法很好的解決了不同的圖形疊加在一起里的問題,使得最后的繪制只需要按照一個for循環的遍歷就可以完成。3?繪制的功能函數與MFC框架很好的分離,功能更函數等類用的是C++的格式,其中的繪制函數用的是WindowsAPI,可以很好的實現代碼的復用,在其他框架下也能使用。四、 程序風格1?有時標識符會拼音與英文混用喜歡把動態變化的東西設置為靜態的成員變量代碼不夠簡潔,喜歡把類似功能的代碼COPY到另一個地方做修改,所以看起來有些亂。4?將所有自己寫的類的聲明寫在一個總的頭文件中,這樣引入到MFC中比較方便5?使用指針,而忽略了引用。以后應該多使用引用,看起來比較簡單。6?注釋喜歡寫在聲明部分五、 運行情況程序可以正常的運行,完成各項功能:六、使用方式1?屬性設置b〔H)繪凰雇性單擊屬性中的畫筆顏色或者畫刷顏色進行顏色屬性的設置。單擊屬性中的畫筆寬度,彈出對話框,可以滑動滾動條對寬度進行設置。2.繪圖單擊繪圖可以選擇相應的圖形對齊進行繪制。編輯部分單擊編輯中的撤銷,可以撤回上一步,刪除最頂層的圖形,對于新打開的文件一樣適用
單擊文件中的打開或新建或詢問是否保存文件選擇.me格式的文件,即可打開。
庫tearMEDIA(E:) 二|■匡]書名稱幢改日朋Fawo-庫tearMEDIA(E:) 二|■匡]書名稱幢改日朋Fawo-fit制/id亡cr2010/1/1210:49irri3ge&2009/12/2&22:46JavaApplication22010/3/1319:00KwDconload2009/11/2922:42Movie2009/11/3016L2LMusic2010/2/77:54softw
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T/CSWSL 038-2024飼料原料發酵谷物醋糟
- T/CAR 17-2024制冷智能零售柜
- 上海自愿離婚協議(協議文本)3篇
- 撤資協議書范本6篇
- 二手機動車買賣標準合同7篇
- 熬夜帶來的疾病
- 健康保養培訓課件
- 運動中急救知識
- 2025益陽職業技術學院輔導員考試試題及答案
- 2025贛南衛生健康職業學院輔導員考試試題及答案
- 2025屆江蘇省蘇州市八校高三下學期三模聯考物理試卷(含解析)
- 分子氧氧化丙烯制環氧丙烷銅基催化劑的制備及性能研究
- 找人辦事花錢協議書
- 2024-2025學年青島版(五四學制)小學數學二年級下冊(全冊)知識點復習要點歸納
- 人教版五下-6.1 同分母分數加減法(教學課件)
- 2025年入團考試必考題目試題及答案
- 商標基礎知識試題及答案
- 中小學人工智能通識教育指南(2025年版)
- 職業技術學院裝配式建筑工程技術專業人才培養方案(2024版)
- 學校學生食品安全培訓課件
- 福建省2024-2025學年高一下學期4月期中聯考英語試題(原卷版+解析版)
評論
0/150
提交評論