![第3章MFC基本應(yīng)用程序的建立_第1頁](http://file4.renrendoc.com/view/ac609b3c833dda029638f2f6bc5154fb/ac609b3c833dda029638f2f6bc5154fb1.gif)
![第3章MFC基本應(yīng)用程序的建立_第2頁](http://file4.renrendoc.com/view/ac609b3c833dda029638f2f6bc5154fb/ac609b3c833dda029638f2f6bc5154fb2.gif)
![第3章MFC基本應(yīng)用程序的建立_第3頁](http://file4.renrendoc.com/view/ac609b3c833dda029638f2f6bc5154fb/ac609b3c833dda029638f2f6bc5154fb3.gif)
![第3章MFC基本應(yīng)用程序的建立_第4頁](http://file4.renrendoc.com/view/ac609b3c833dda029638f2f6bc5154fb/ac609b3c833dda029638f2f6bc5154fb4.gif)
![第3章MFC基本應(yīng)用程序的建立_第5頁](http://file4.renrendoc.com/view/ac609b3c833dda029638f2f6bc5154fb/ac609b3c833dda029638f2f6bc5154fb5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第3章MFC基本應(yīng)用程序的建立
3.1Windows編程基礎(chǔ)3.2創(chuàng)建MFC應(yīng)用程序3.3MFC應(yīng)用程序框架3.4VisualC++常用操作3.1Windows編程基礎(chǔ)3.1.1C++的Windows編程【例Ex_HelloMsg】
一個簡單的Windows應(yīng)用程序#include<windows.h>intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRlpCmdLine,intnCmdShow){ MessageBox(NULL,"你好,我的VisualC++世界!","問候",0); return0;}3.1.1C++的Windows編程3.1.1C++的Windows編程(5)輸入上面的代碼,運行程序,結(jié)果如圖3.1所示。3.1.1C++的Windows編程【例Ex_HelloWin】
一個比較完整的Windows應(yīng)用程序在VisualC++6.0中創(chuàng)建和運行上述程序的步驟與【例Ex_HelloMsg】相同。程序運行后,單擊鼠標(biāo)左鍵,就會彈出一個對話框,結(jié)果如圖3.2所示。3.1.1C++的Windows編程窗口過程函數(shù)WndProc用來接收和處理各種不同的消息,而主函數(shù)WinMain通常要完成以下幾步工作:(1)調(diào)用API函數(shù)RegisterClass注冊應(yīng)用程序的窗口類。(2)調(diào)用相關(guān)API函數(shù)創(chuàng)建和顯示窗口,并進(jìn)行其他必要的初始化處理。(3)創(chuàng)建和啟動應(yīng)用程序的消息循環(huán)。(4)如果接收到WM_QUIT消息,則調(diào)用PostQuitMessage,向系統(tǒng)請求退出。3.1.1C++的Windows編程上述Windows應(yīng)用程序的基本流程,還可用圖3.3來表示。3.1.2Windows編程特點1.消息驅(qū)動機(jī)制在Windows操作環(huán)境中,無論是系統(tǒng)產(chǎn)生的動作或是用戶運行應(yīng)用程序產(chǎn)生的動作,都稱為事件(Events)產(chǎn)生的消息(Message)。2.圖形設(shè)備接口在傳統(tǒng)的DOS環(huán)境中,想要在打印機(jī)上打印一幅圖形是一件非常復(fù)雜的事情,因為用戶必須根據(jù)打印機(jī)類型和指令規(guī)則向打印機(jī)輸送數(shù)據(jù)。3.1.2Windows編程特點3.基于資源的程序設(shè)計Windows應(yīng)用程序常常包含眾多圖形元素,如光標(biāo)、菜單、工具欄、位圖、對話框等,在Windows環(huán)境下,每一個這樣的元素都作為一種可以裝入應(yīng)用程序的資源來存放。4.動態(tài)鏈接庫動態(tài)鏈接庫提供了一些特定結(jié)構(gòu)的函數(shù),能被應(yīng)用程序在運行過程中裝入和連接,且多個程序可以共享同一個動態(tài)鏈接庫,這樣就可以大大節(jié)省內(nèi)存和磁盤空間。3.1.2Windows編程特點5.進(jìn)程和線程32位Windows多任務(wù)操作系統(tǒng)采用了進(jìn)程和線程的管理模式。進(jìn)程是裝入內(nèi)存中正在執(zhí)行的應(yīng)用程序。進(jìn)程包括私有的虛擬地址空間、代碼、數(shù)據(jù)及其他操作系統(tǒng)資源,如文件、管道及對該進(jìn)程可見的同步對象等。3.1.3Windows基本數(shù)據(jù)類型在前面的示例和函數(shù)原型中,有一些“奇怪”的數(shù)據(jù)類型,如前面的HINSTANCE和LPSTR等。表3.1列出了一些在Windows編程中常用的基本數(shù)據(jù)類型。Windows所用的數(shù)據(jù)類型對應(yīng)的基本數(shù)據(jù)類型說
明BOOLbool布爾值BSTRunsignedshort*32位字符指針BYTEunsignedchar8位無符號整數(shù)COLORREFunsignedlong用做顏色值的32位值DWORDunsignedlong32位無符號整數(shù),段地址和相關(guān)的偏移地址LONGLong32位帶符號整數(shù)LPARAMlong作為參數(shù)傳遞給窗口過程或回調(diào)函數(shù)的32位值LPCSTRconstchar*指向字符串常量的32位指針LPSTRchar*指向字符串的32位指針LPVOIDvoid*指向未定義類型的32位指針LRESULTlong來自窗口過程或回調(diào)函數(shù)的32位返回值UINTunsignedint32位無符號整數(shù)WORDunsignedshort16位無符號整數(shù)WPARAMunsignedint當(dāng)做參數(shù)傳遞給窗口過程或回調(diào)函數(shù)的32位值3.1.3Windows基本數(shù)據(jù)類型表3.2列出了常用的預(yù)定義句柄,它們的類型均為void*,即一個32位指針。句柄類型說明句柄類型說明HBITMAP保存位圖信息的內(nèi)存域的句柄HINSTANCE應(yīng)用程序的實例句柄HBRUSH畫刷句柄HMENU菜單句柄HCURSOR鼠標(biāo)光標(biāo)句柄HPALETTE顏色調(diào)色板句柄HDC設(shè)備描述表句柄HPEN在設(shè)備上畫圖時用于指明線型的筆的句柄HFONT字體句柄HWND窗口句柄HICON圖標(biāo)句柄3.2創(chuàng)建MFC應(yīng)用程序3.2.1設(shè)計一個MFC程序【例Ex_HelloMFC】
一個MFC應(yīng)用程序3.2.1設(shè)計一個MFC程序3.2.2理解程序代碼下面來看看上述程序中InitInstance的執(zhí)行過程。(1)首先執(zhí)行的是:m_pMainWnd=newCMainFrame();該語句用來創(chuàng)建從CFrameWnd類派生而來的用戶框架窗口CMainFrame類對象,繼而調(diào)用該類的構(gòu)造函數(shù),使得Create函數(shù)被調(diào)用,完成了窗口創(chuàng)建工作。(2)然后執(zhí)行后面兩句:m_pMainWnd->ShowWindow(m_nCmdShow);m_pMainWnd->UpdateWindow();用于窗口的顯示和更新。(3)最后返回TRUE,表示窗口創(chuàng)建成功。3.2.3使用MFCAppWizard在VisualC++6.0中,選擇“文件”→“新建”菜單命令,在彈出的“新建”對話框中,可以看到“工程”標(biāo)簽頁面中,顯示了一系列的應(yīng)用程序項目類型,如表3.3所示。名稱項目ATLCOMMFCAppWizard創(chuàng)建ATL(ActiveTemplateLibrary)應(yīng)用模塊工程ClusterResourceTypeWizard創(chuàng)建ClusterResource(用于WindowsNT服務(wù)器)CustomMFCAppWizard創(chuàng)建自己的應(yīng)用程序向?qū)atabaseProject創(chuàng)建數(shù)據(jù)庫應(yīng)用程序DevStudioAdd-inWizard創(chuàng)建ActiveX組件或VBScript宏ExtendedStoredProcWizard創(chuàng)建基于SQL服務(wù)器下的外部存儲過程ISAPIExtensionWizard創(chuàng)建InternetServer程序MakeFile創(chuàng)建獨立于VisualC++開發(fā)環(huán)境的應(yīng)用程序MFCActiveXControlWizard創(chuàng)建ActiveXControl應(yīng)用程序MFCAppWizard(dll)MFC的動態(tài)鏈接庫MFCAppWizard(exe)一般MFC的Windows應(yīng)用程序UtilityProject創(chuàng)建簡單、實用的應(yīng)用程序Win32Application其他Win32的Windows應(yīng)用程序Win32ConsoleApplicationWin32的控制臺應(yīng)用程序Win32Dynamic-LinkLibraryWin32的動態(tài)鏈接庫Win32StaticLibraryWin32的靜態(tài)鏈接庫3.2.4創(chuàng)建文檔應(yīng)用程序1.開始選擇“文件”→“新建”菜單命令,在彈出的“新建”對話框中,“工程”標(biāo)簽頁面中顯示了一系列的應(yīng)用程序項目類型;選擇MFCAppWizard(exe)的項目類型,將項目工作文件夾定位在“D:\VisualC++程序\第3章”,并在“工程名稱”編輯框中輸入項目名Ex_SDIHello,如圖3.5所示。3.2.4創(chuàng)建文檔應(yīng)用程序2.第一步單擊
“確定”按鈕,出現(xiàn)如圖3.6所示的對話框。3.2.4創(chuàng)建文檔應(yīng)用程序3.第二步單擊“下一步”按鈕,出現(xiàn)如圖3.7所示的對話框3.2.4創(chuàng)建文檔應(yīng)用程序4.第三步單擊“下一步”按鈕進(jìn)入下一步,出現(xiàn)如圖3.8所示的對話框。3.2.4創(chuàng)建文檔應(yīng)用程序5.第四步單擊“下一步”按鈕進(jìn)入下一步,出現(xiàn)如圖3.9所示的對話框,前幾項依次確定對浮動工具條、打印與預(yù)覽及通信等特性的支持。3.2.4創(chuàng)建文檔應(yīng)用程序6.第五步保留默認(rèn)選項,單擊“下一步”按鈕,彈出如圖3.10所示的對話框,這里出現(xiàn)3個方面的選項。3.2.4創(chuàng)建文檔應(yīng)用程序7.第六步保留默認(rèn)選項,單擊“下一步”按鈕,出現(xiàn)如圖3.11所示的對話框。3.2.4創(chuàng)建文檔應(yīng)用程序8.編譯并運行到這里為止,雖然沒有編寫任何程序代碼,但MFCAppWizard已經(jīng)根據(jù)前面的選擇自動生成了相應(yīng)的基本應(yīng)用程序框架。單擊編譯工具欄
上的運行工具按鈕
或按快捷鍵【Ctrl+F5】,系統(tǒng)開始編連并運行生成的單文檔應(yīng)用程序可執(zhí)行文件Ex_SDIHello.exe,運行結(jié)果如圖3.12所示。菜單欄工具欄狀態(tài)欄標(biāo)題欄文檔窗口3.3MFC應(yīng)用程序框架3.3.1項目文件和配置表3.4列出了這些文件類型的含義。類型含義.cpp(CPlusPlus),.hC++文件,C++頭文件.opt關(guān)于開發(fā)環(huán)境的參數(shù)文件,如工具條位置等信息.aps(AppStudioFile)資源輔助文件,二進(jìn)制格式.clwClassWizard信息文件.dsp(DeveloperStudioProject)項目文件.dsw(DeveloperStudioWorkspace)項目工作區(qū)文件.plg編譯信息文件.hpj(HelpProject) 幫助文件項目.mdp(MicrosoftDevStudioProject)舊版本的項目文件.bsc瀏覽信息文件.map執(zhí)行文件的映像信息記錄文件.pch(Pre-CompiledFile) 預(yù)編譯文件,可以加快編譯速度,但是文件非常大.pdb(ProgramDatabase)記錄與程序有關(guān)的一些數(shù)據(jù)和調(diào)試信息.exp記錄DLL文件中的一些信息,只有在編譯DLL后才會生成.ncb無編譯瀏覽文件(nocompilebrowser)3.3.1項目文件和配置除了上述文件外,還有相應(yīng)的Debug(調(diào)試)、Release(發(fā)行)、Res(資源)等子文件夾。例如前面創(chuàng)建的單文檔應(yīng)用程序項目Ex_SDIHello,其各文件的組織如圖3.13所示。3.3.2項目管理和項目工作區(qū)1.ClassView項目工作區(qū)窗口的ClassView頁面用于顯示和管理項目中所有的類。以打開的項目名Ex_SDIHello為例,ClassView頁面顯示出“Ex_SDIHelloclasses”的樹狀節(jié)點,在它的前面是一個圖標(biāo)和一個套在方框中的符號“+”,單擊符號“+”或雙擊圖標(biāo),則Ex_SDIHello中的所有類名都將被顯示,如CMainFrame、CEx_SDIHelloApp、CEx_SDIHelloDoc、CEx_SDIHelloView等,如圖3.14所示。3.3.2項目管理和項目工作區(qū)2.ResourceView單擊項目工作區(qū)窗口底部的ResourceView標(biāo)簽,打開ResourceView頁面,如圖3.15所示。3.3.2項目管理和項目工作區(qū)3.FileView單擊項目工作區(qū)窗口底部的FileView標(biāo)簽,打開FileView頁面,如圖3.16所示。3.3.3MFC程序類結(jié)構(gòu)將VisualC++6.0項目工作區(qū)窗口切換到ClassView頁面,可以看到MFC為單文檔應(yīng)用程序項目Ex_SDIHello自動創(chuàng)建了類CAboutDlg、CEx_SDIHelloApp、CEx_SDIHelloDoc、CEx_SDIHelloView和CMainFrame。這些MFC類之間的繼承和派生關(guān)系如圖3.17所示。3.4VisualC++常用操作3.4.1使用類向?qū)Т蜷_MFC類向?qū)Э梢允褂孟铝袔追N方法。(1)選擇“查看”→“建立類向?qū)А辈藛蚊罨蛑苯邮褂谩綜trl+W】快捷鍵。(2)在源代碼文件的文檔編輯窗口中,右擊鼠標(biāo),從彈出的快捷菜單中選擇“建立類向?qū)А泵?。?dāng)MFC類向?qū)Т蜷_后,就會彈出如圖3.18所示的MFCClassWizard對話框(設(shè)VisualC++打開的是單文檔應(yīng)用程序Ex_SDI)。3.4.2類的添加和刪除1.類的添加按快捷鍵【Ctrl+W】啟動MFCClassWizard對話框。單擊
按鈕,從彈出的下拉菜單中選擇New命令,彈出如圖3.19所示的NewClass對話框。3.4.2類的添加和刪除2.類的刪除當(dāng)添加的類需要刪除時,則需要按下列步驟進(jìn)行。(1)將VisualC++6.0打開的所有文檔窗口關(guān)閉。(2)將項目工作區(qū)窗口切換到FileView頁面,展開SourceFiles和HeaderFiles節(jié)點,分別選定要刪除類的對應(yīng).h和.cpp文件,按下【Delete】鍵,刪除這兩個文件。(3)選擇“文件”→“關(guān)閉工作區(qū)”菜單命令,關(guān)閉項目。(4)從當(dāng)前項目文件夾中刪除對應(yīng)的.h和.cpp文件與.clw文件。3.4.3成員的添加和刪除1.添加類的成員函數(shù)(1)選擇“文件”→“打開工作空間”菜單命令,從彈出的對話框中打開前面創(chuàng)建的單文檔應(yīng)用程序項目Ex_SDI。(2)將項目工作區(qū)窗口切換到ClassView頁面,右擊“CEx_DemoView”類名,彈出相應(yīng)的快捷菜單,如圖3.21所示。3.4.3成員的添加和刪除(3)從彈出的快捷菜單中選擇“AddMemberFunction”,彈出“添加成員函數(shù)”(AddMemberFunction)對話框。在“函數(shù)類型”(FunctionType)框中輸入void,在“函數(shù)描述”(FunctionDeclaration)框中輸入DoDemo(intnDemo1),對話框下方用來確定該成員函數(shù)的訪問方式,如
圖3.22所示。3.4.3成員的添加和刪除(4)單擊“確定”按鈕,文檔窗口打開該類源代碼文件,并自動定位到添加的函數(shù)實現(xiàn)代碼處,在這里用戶可以添加該函數(shù)的代碼,如圖3.23所示。3.4.3成員的添加和刪除2.添加類的成員變量①將項目工作區(qū)窗口切換到ClassView頁面。②右擊“CEx_SDIView”類名,從彈出的快捷菜單中選擇“AddMemberVariable”,彈出“添加成員變量”(AddMemberVariable)對話框。在“變量類型”(VariableType)框中輸入int,在“變量名稱”(Va
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度教育產(chǎn)業(yè)再擔(dān)保合同模板
- 2025年度互聯(lián)網(wǎng)數(shù)據(jù)中心IDC建設(shè)合同大全
- 貧困戶低保申請書范文
- 2025年度區(qū)域代理商信息保密及知識產(chǎn)權(quán)保護(hù)合同
- 2025年度工業(yè)地產(chǎn)租賃管理合同
- 2025年度時尚服飾廣告宣傳服務(wù)合同
- 2025年度住宅小區(qū)水電暖設(shè)施更新?lián)Q代施工承包合同范本
- 2025年度區(qū)塊鏈技術(shù)應(yīng)用預(yù)付款授權(quán)合同
- 電商行業(yè)趨勢分析與未來戰(zhàn)略規(guī)劃
- 流量控制策略在移動網(wǎng)絡(luò)教育中的應(yīng)用研究
- 精神分裂癥合并糖尿病患者護(hù)理查房課件
- 河南省南陽市2023-2024學(xué)年八年級上學(xué)期期末考試數(shù)學(xué)試題
- GB/T 44230-2024政務(wù)信息系統(tǒng)基本要求
- 共享wifi貼合同范本
- 統(tǒng)戰(zhàn)工作先進(jìn)個人事跡材料
- 成人鼻腸管的留置與維護(hù)
- 國能遼寧北票 200MW 風(fēng)力發(fā)電項目地質(zhì)災(zāi)害危險性評估報告
- 2024年松溪縣城投實業(yè)集團(tuán)有限公司招聘筆試沖刺題(帶答案解析)
- 《中電聯(lián)團(tuán)體標(biāo)準(zhǔn)-220kV變電站并聯(lián)直流電源系統(tǒng)技術(shù)規(guī)范》
- 新版ISO22301BCM體系手冊
- 55項臨床護(hù)理技術(shù)操作標(biāo)準(zhǔn)(49-55項)
評論
0/150
提交評論