版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第十三章
MFC庫(kù)與Windows程序開發(fā)概述清華大學(xué)鄭莉C++語(yǔ)言程序設(shè)計(jì)第十三章
MFC庫(kù)與Windows程序開發(fā)概述清華大學(xué)2本章主要內(nèi)容Windows程序的基本結(jié)構(gòu)MFC庫(kù)簡(jiǎn)介使用VisualC++開發(fā)Windows程序2本章主要內(nèi)容Windows程序的基本結(jié)構(gòu)3Windows程序的基本結(jié)構(gòu)開始執(zhí)行初始化應(yīng)用初始化和創(chuàng)建應(yīng)用窗口進(jìn)入消息循環(huán)并從消息隊(duì)列得到一個(gè)消息當(dāng)前消息是否“退出”?終止執(zhí)行程序是否定義了對(duì)此消息的處理進(jìn)行默認(rèn)處理處理消息否否是是3Windows程序的基本結(jié)構(gòu)開始執(zhí)行初始化應(yīng)用初始化和創(chuàng)建4WinMain()函數(shù)初始化應(yīng)用初始化和創(chuàng)建應(yīng)用窗口進(jìn)入應(yīng)用程序的消息循環(huán)4WinMain()函數(shù)初始化應(yīng)用5窗口過程WndProc()執(zhí)行窗口的消息處理:分析消息信息,決定應(yīng)用程序如何處理消息或響應(yīng)一個(gè)事件。5窗口過程WndProc()執(zhí)行窗口的消息處理:6MFC庫(kù)類庫(kù)是一個(gè)可以在應(yīng)用程序中使用的相互關(guān)聯(lián)的類的集合。MFC庫(kù)——Microsoft基本類庫(kù)是一個(gè)Windows應(yīng)用程序框架,它定義了應(yīng)用程序的結(jié)構(gòu),并實(shí)現(xiàn)了標(biāo)準(zhǔn)的用戶接口:管理窗口、菜單、對(duì)話框,實(shí)現(xiàn)基本的輸入/輸出和數(shù)據(jù)存儲(chǔ)。MFC庫(kù)簡(jiǎn)介6MFC庫(kù)類庫(kù)是一個(gè)可以在應(yīng)用程序中使用的相互關(guān)聯(lián)的類的集合7應(yīng)用程序框架應(yīng)用程序框架是一種類庫(kù)的超集在程序運(yùn)行時(shí),流程的控制多數(shù)是由框架實(shí)現(xiàn)的。應(yīng)用MFC框架來構(gòu)造應(yīng)用程序時(shí),程序員的角色就是提供應(yīng)用程序?qū)S玫拇a,并指定這些代碼是用來響應(yīng)哪些消息和命令的,以使框架能夠在消息和代碼間建立聯(lián)系。MFC庫(kù)簡(jiǎn)介7應(yīng)用程序框架應(yīng)用程序框架是一種類庫(kù)的超集MFC庫(kù)簡(jiǎn)介8"文檔—視圖"結(jié)構(gòu)應(yīng)用程序框架的核心是"文檔—視圖"結(jié)構(gòu)。MFC通過"文檔—視圖"結(jié)構(gòu)為應(yīng)用程序提供一種將數(shù)據(jù)與視圖相分離的存儲(chǔ)方式。文檔類的作用是將應(yīng)程序的數(shù)據(jù)保存在文檔類對(duì)象中,以及從磁盤文件中讀或向磁盤文件中寫數(shù)據(jù)。視圖類的作用是顯示數(shù)據(jù)和編輯數(shù)據(jù)。MFC庫(kù)簡(jiǎn)介8"文檔—視圖"結(jié)構(gòu)應(yīng)用程序框架的核心是"文檔—視圖"結(jié)構(gòu)。9使用VisualC++開發(fā)Windows程序建立一個(gè)應(yīng)用程序框架觀察自動(dòng)生成的應(yīng)用程序構(gòu)造應(yīng)用程序的用戶接口將菜單映射到消息處理函數(shù)將工具欄按鈕映射到命令測(cè)試自己編寫的消息處理函數(shù)增加對(duì)話框初始化、驗(yàn)證和提取對(duì)話框中的數(shù)據(jù)創(chuàng)建新增的類添加現(xiàn)成的組件到應(yīng)用程序中實(shí)現(xiàn)自己的文檔類實(shí)現(xiàn)Open、Save和SaveAs命令實(shí)現(xiàn)視圖類改進(jìn)缺省的打印增加屏幕滾動(dòng)創(chuàng)建表單視圖創(chuàng)建數(shù)據(jù)庫(kù)表單構(gòu)造(Build)、測(cè)試和調(diào)試應(yīng)用程序9使用VisualC++開發(fā)Windows程序建立一個(gè)應(yīng)用例:人員信息管理程序用MFC設(shè)計(jì)一個(gè)人員信息管理程序的界面通過對(duì)話框輸入人員信息在窗口中顯示人員信息10例:人員信息管理程序用MFC設(shè)計(jì)一個(gè)人員信息管理程序的界面1Step1:建立MFC工程11選中工程類型Step1:建立MFC工程11選中工程類型Step2:用向?qū)渲霉こ?2選擇應(yīng)用程序類型Step2:用向?qū)渲霉こ?2選擇應(yīng)用程序類型Step3:添加對(duì)話框13資源視圖Step3:添加對(duì)話框13資源視圖Step4:為對(duì)話框添加類14輸入類名Step4:為對(duì)話框添加類14輸入類名Step5:向?qū)υ捒蛑刑砑涌丶?/p>
15Step5:向?qū)υ捒蛑刑砑涌丶?5Step5:向?qū)υ捒蛑刑砑涌丶?/p>
16使用工具箱添加控件在屬性列表中設(shè)置窗口文字Step5:向?qū)υ捒蛑刑砑涌丶?6使用工具箱添加控件在Step6:為文本框添加變量17變量名變量類型Step6:為文本框添加變量17變量名變量類型Step7:編輯菜單18添加新的菜單項(xiàng)Step7:編輯菜單18添加新的菜單項(xiàng)Step8:為菜單項(xiàng)添加事件處理程序19選擇事件處理程序所屬類Step8:為菜單項(xiàng)添加事件處理程序19選擇事件處理程序InputData菜單項(xiàng)處理(1)constchar*constEMPLOYEE_FILE_NAME="employee.txt";voidCMy13_1View::OnTestInputdata(){ Managerm1; Techniciant1; SalesManagersm1; Salesmans1; vector<Employee*>employees; employees.push_back(&m1); employees.push_back(&t1); employees.push_back(&sm1); employees.push_back(&s1); CInputDialoginput; input.DoModal();
//設(shè)置姓名
m1.setName(input.m_str1.GetString()); t1.setName(input.m_str2.GetString()); sm1.setName(input.m_str3.GetString()); s1.setName(input.m_str4.GetString());20InputData菜單項(xiàng)處理(1)constchar*InputData菜單項(xiàng)處理(2) t1.setWorkHours(input.m_hours);//設(shè)置工作時(shí)間
sm1.setSales(input.m_ss1);//設(shè)置本月的銷售總額
s1.setSales(input.m_ss2);//設(shè)置本月銷售額
ofstreamout(EMPLOYEE_FILE_NAME); //創(chuàng)建一個(gè)輸出文件流對(duì)象
for(vector<Employee*>::iteratoriter=employees.begin(); iter!=employees.end(); ++iter){ (*iter)->promote(); (*iter)->pay(); //計(jì)算月薪
out<<(*iter)->getName()<<“編號(hào)”<< (*iter)->getIndividualEmpNo()<<“,級(jí)別為”<<(*iter)->getGrade() <<“級(jí),本月工資"<<(*iter)->getAccumPay()<<endl; } out.close();}21InputData菜單項(xiàng)處理(2) t1.setWorkHOutputData菜單項(xiàng)處理voidCMy13_1View::OnTestOutputdata(){ ifstreamin(EMPLOYEE_FILE_NAME); //創(chuàng)建一個(gè)輸入文件流對(duì)象
if(!in){ MessageBox("Filedoesn'texisted!"); return; } //從文件讀入人員信息
CClientDCdc(this); inti=0; while(true){ stringline; getline(in,line); if(!in)break; dc.TextOut(100,100,"人員信息管理系統(tǒng):"); dc.TextOut(100,150+30*(i++),line.c_str()); } in.close();}22OutputData菜單項(xiàng)處理voidCMy13_1ViStep9:添加Employee相關(guān)文件將Employee.h和Employee.cpp加入工程在13_1View.cpp中添加下列指令:#include"Employee.h"#include"InputDialog.h"#include<fstream>#include<string>#include<vector>usingnamespacestd;23Step9:添加Employee相關(guān)文件將Employe程序運(yùn)行結(jié)果——主窗體24程序運(yùn)行結(jié)果——主窗體24程序運(yùn)行結(jié)果——輸入對(duì)話框25程序運(yùn)行結(jié)果——輸入對(duì)話框25程序運(yùn)行結(jié)果——結(jié)果輸出26程序運(yùn)行結(jié)果——結(jié)果輸出2627小結(jié)與復(fù)習(xí)建議主要內(nèi)容簡(jiǎn)單介紹Windows圖形界面程序設(shè)計(jì)基礎(chǔ)知識(shí)和基本設(shè)計(jì)思路。達(dá)到的目標(biāo)簡(jiǎn)單了解Windows環(huán)境下的應(yīng)用程序開發(fā)實(shí)驗(yàn)任務(wù)實(shí)驗(yàn)十三27小結(jié)與復(fù)習(xí)建議主要內(nèi)容第十三章
MFC庫(kù)與Windows程序開發(fā)概述清華大學(xué)鄭莉C++語(yǔ)言程序設(shè)計(jì)第十三章
MFC庫(kù)與Windows程序開發(fā)概述清華大學(xué)29本章主要內(nèi)容Windows程序的基本結(jié)構(gòu)MFC庫(kù)簡(jiǎn)介使用VisualC++開發(fā)Windows程序2本章主要內(nèi)容Windows程序的基本結(jié)構(gòu)30Windows程序的基本結(jié)構(gòu)開始執(zhí)行初始化應(yīng)用初始化和創(chuàng)建應(yīng)用窗口進(jìn)入消息循環(huán)并從消息隊(duì)列得到一個(gè)消息當(dāng)前消息是否“退出”?終止執(zhí)行程序是否定義了對(duì)此消息的處理進(jìn)行默認(rèn)處理處理消息否否是是3Windows程序的基本結(jié)構(gòu)開始執(zhí)行初始化應(yīng)用初始化和創(chuàng)建31WinMain()函數(shù)初始化應(yīng)用初始化和創(chuàng)建應(yīng)用窗口進(jìn)入應(yīng)用程序的消息循環(huán)4WinMain()函數(shù)初始化應(yīng)用32窗口過程WndProc()執(zhí)行窗口的消息處理:分析消息信息,決定應(yīng)用程序如何處理消息或響應(yīng)一個(gè)事件。5窗口過程WndProc()執(zhí)行窗口的消息處理:33MFC庫(kù)類庫(kù)是一個(gè)可以在應(yīng)用程序中使用的相互關(guān)聯(lián)的類的集合。MFC庫(kù)——Microsoft基本類庫(kù)是一個(gè)Windows應(yīng)用程序框架,它定義了應(yīng)用程序的結(jié)構(gòu),并實(shí)現(xiàn)了標(biāo)準(zhǔn)的用戶接口:管理窗口、菜單、對(duì)話框,實(shí)現(xiàn)基本的輸入/輸出和數(shù)據(jù)存儲(chǔ)。MFC庫(kù)簡(jiǎn)介6MFC庫(kù)類庫(kù)是一個(gè)可以在應(yīng)用程序中使用的相互關(guān)聯(lián)的類的集合34應(yīng)用程序框架應(yīng)用程序框架是一種類庫(kù)的超集在程序運(yùn)行時(shí),流程的控制多數(shù)是由框架實(shí)現(xiàn)的。應(yīng)用MFC框架來構(gòu)造應(yīng)用程序時(shí),程序員的角色就是提供應(yīng)用程序?qū)S玫拇a,并指定這些代碼是用來響應(yīng)哪些消息和命令的,以使框架能夠在消息和代碼間建立聯(lián)系。MFC庫(kù)簡(jiǎn)介7應(yīng)用程序框架應(yīng)用程序框架是一種類庫(kù)的超集MFC庫(kù)簡(jiǎn)介35"文檔—視圖"結(jié)構(gòu)應(yīng)用程序框架的核心是"文檔—視圖"結(jié)構(gòu)。MFC通過"文檔—視圖"結(jié)構(gòu)為應(yīng)用程序提供一種將數(shù)據(jù)與視圖相分離的存儲(chǔ)方式。文檔類的作用是將應(yīng)程序的數(shù)據(jù)保存在文檔類對(duì)象中,以及從磁盤文件中讀或向磁盤文件中寫數(shù)據(jù)。視圖類的作用是顯示數(shù)據(jù)和編輯數(shù)據(jù)。MFC庫(kù)簡(jiǎn)介8"文檔—視圖"結(jié)構(gòu)應(yīng)用程序框架的核心是"文檔—視圖"結(jié)構(gòu)。36使用VisualC++開發(fā)Windows程序建立一個(gè)應(yīng)用程序框架觀察自動(dòng)生成的應(yīng)用程序構(gòu)造應(yīng)用程序的用戶接口將菜單映射到消息處理函數(shù)將工具欄按鈕映射到命令測(cè)試自己編寫的消息處理函數(shù)增加對(duì)話框初始化、驗(yàn)證和提取對(duì)話框中的數(shù)據(jù)創(chuàng)建新增的類添加現(xiàn)成的組件到應(yīng)用程序中實(shí)現(xiàn)自己的文檔類實(shí)現(xiàn)Open、Save和SaveAs命令實(shí)現(xiàn)視圖類改進(jìn)缺省的打印增加屏幕滾動(dòng)創(chuàng)建表單視圖創(chuàng)建數(shù)據(jù)庫(kù)表單構(gòu)造(Build)、測(cè)試和調(diào)試應(yīng)用程序9使用VisualC++開發(fā)Windows程序建立一個(gè)應(yīng)用例:人員信息管理程序用MFC設(shè)計(jì)一個(gè)人員信息管理程序的界面通過對(duì)話框輸入人員信息在窗口中顯示人員信息37例:人員信息管理程序用MFC設(shè)計(jì)一個(gè)人員信息管理程序的界面1Step1:建立MFC工程38選中工程類型Step1:建立MFC工程11選中工程類型Step2:用向?qū)渲霉こ?9選擇應(yīng)用程序類型Step2:用向?qū)渲霉こ?2選擇應(yīng)用程序類型Step3:添加對(duì)話框40資源視圖Step3:添加對(duì)話框13資源視圖Step4:為對(duì)話框添加類41輸入類名Step4:為對(duì)話框添加類14輸入類名Step5:向?qū)υ捒蛑刑砑涌丶?/p>
42Step5:向?qū)υ捒蛑刑砑涌丶?5Step5:向?qū)υ捒蛑刑砑涌丶?/p>
43使用工具箱添加控件在屬性列表中設(shè)置窗口文字Step5:向?qū)υ捒蛑刑砑涌丶?6使用工具箱添加控件在Step6:為文本框添加變量44變量名變量類型Step6:為文本框添加變量17變量名變量類型Step7:編輯菜單45添加新的菜單項(xiàng)Step7:編輯菜單18添加新的菜單項(xiàng)Step8:為菜單項(xiàng)添加事件處理程序46選擇事件處理程序所屬類Step8:為菜單項(xiàng)添加事件處理程序19選擇事件處理程序InputData菜單項(xiàng)處理(1)constchar*constEMPLOYEE_FILE_NAME="employee.txt";voidCMy13_1View::OnTestInputdata(){ Managerm1; Techniciant1; SalesManagersm1; Salesmans1; vector<Employee*>employees; employees.push_back(&m1); employees.push_back(&t1); employees.push_back(&sm1); employees.push_back(&s1); CInputDialoginput; input.DoModal();
//設(shè)置姓名
m1.setName(input.m_str1.GetString()); t1.setName(input.m_str2.GetString()); sm1.setName(input.m_str3.GetString()); s1.setName(input.m_str4.GetString());47InputData菜單項(xiàng)處理(1)constchar*InputData菜單項(xiàng)處理(2) t1.setWorkHours(input.m_hours);//設(shè)置工作時(shí)間
sm1.setSales(input.m_ss1);//設(shè)置本月的銷售總額
s1.setSales(input.m_ss2);//設(shè)置本月銷售額
ofstreamout(EMPLOYEE_FILE_NAME); //創(chuàng)建一個(gè)輸出文件流對(duì)象
for(vector<Employee*>::iteratoriter=employees.begin(); iter!=employees.end(); ++iter){ (*iter)->promote(); (*iter)->pay(); //計(jì)算月薪
out<<(*iter)->getName()<<“編號(hào)”<< (*iter)->getIndividualEmpNo()<<“,級(jí)別為”<<(*iter)->getGrade() <<“級(jí),本月工資"<<(*iter)->getAccumPay()<<endl; } out.close();}48InputData菜單項(xiàng)處理(2) t1.setWorkHOutputData菜單項(xiàng)處理voidCMy13_1View::OnTestOutputdata(){ ifstreamin(EMPLOYEE_FILE_NAME); //創(chuàng)建一個(gè)輸入文件流對(duì)象
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 京東店鋪精細(xì)化運(yùn)營(yíng)與品類排名提升工作心得(3篇)
- 車間級(jí)安全培訓(xùn)內(nèi)容課件
- 2026年教師個(gè)人年度教學(xué)工作總結(jié)(2篇)
- 門診消毒隔離制度
- 車間木棧板安全培訓(xùn)內(nèi)容課件
- 糖尿病患者護(hù)理查房模板
- 書面提出申請(qǐng)報(bào)告(3篇)
- 使用投資計(jì)劃申請(qǐng)報(bào)告(3篇)
- 齊晉鞌之戰(zhàn)課件
- 2026年智能清潔設(shè)備導(dǎo)航系統(tǒng)項(xiàng)目商業(yè)計(jì)劃書
- 2025年昆明市呈貢區(qū)城市投資集團(tuán)有限公司及下屬子公司第二批招聘(11人)考試備考題庫(kù)附答案
- “青苗筑基 浙里建證”浙江省建設(shè)投資集團(tuán)2026屆管培生招聘30人備考核心題庫(kù)及答案解析
- 江蘇百校大聯(lián)考2026屆高三語(yǔ)文第一學(xué)期期末學(xué)業(yè)質(zhì)量監(jiān)測(cè)試題含解析
- 代還按揭協(xié)議書
- 2026江蘇省公務(wù)員考試公安機(jī)關(guān)公務(wù)員(人民警察)歷年真題匯編附答案解析
- 2026年失眠患者睡眠調(diào)理指南
- 2026年盤錦職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)及答案詳解一套
- 2025年10月自考00610高級(jí)日語(yǔ)(二)試題及答案
- 2026年包頭鐵道職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能考試題庫(kù)帶答案解析
- 循證護(hù)理在基礎(chǔ)護(hù)理中的應(yīng)用
- 復(fù)旦大學(xué)招生面試常見問題及回答要點(diǎn)
評(píng)論
0/150
提交評(píng)論