資源描述:
《Windows程序設(shè)計(jì)教程 教學(xué)課件 作者 郭皞巖 屈景輝 廖琪梅 第3章-Windows應(yīng)用程序的面向?qū)ο?ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、Windows程序設(shè)計(jì)教程第3章Windows應(yīng)用程序的面向?qū)ο笤谠缙诘木幊躺闹?,程序員采用C語言和WindowsAPI函數(shù)進(jìn)行Windows程序設(shè)計(jì)。但采用這種方式進(jìn)行程序開發(fā),使得開發(fā)過程艱苦、乏味。隨著編程技術(shù)的不斷發(fā)展,Windows編程采用了面向?qū)ο蟮某绦蛟O(shè)計(jì)思想(ObjectOrientedProgramming,OOP)。這種思想集抽象性、封裝性、集成性和多態(tài)性于一體,提高了編程的效率。下面對(duì)Windows應(yīng)用程序中的面向?qū)ο笏枷脒M(jìn)行介紹。應(yīng)用程序主函數(shù)中類的封裝3.1派生類3.23.1應(yīng)用程序主函數(shù)中類的封
2、裝在2.3節(jié)中,通過對(duì)Windows應(yīng)用程序結(jié)構(gòu)進(jìn)行分析可以得知,主函數(shù)的任務(wù)是創(chuàng)建并顯示窗口和實(shí)現(xiàn)消息循環(huán)。從面向?qū)ο蟮乃枷脒M(jìn)行分析,為了形成程序框架,應(yīng)該聲明兩個(gè)類:應(yīng)用程序類和窗口類。3.1.1窗口類的聲明在窗口類中,應(yīng)該實(shí)現(xiàn)窗口類的設(shè)計(jì)、窗口類的注冊(cè)、窗口的創(chuàng)建和顯示等功能。上述功能是窗口類的成員函數(shù),為了輔助這些成員函數(shù),還應(yīng)該有一個(gè)數(shù)據(jù)成員——HWND類型的窗口句柄。3.1.2應(yīng)用程序類的聲明如果把主函數(shù)中的整個(gè)函數(shù)體作為一個(gè)對(duì)象,并把它叫做應(yīng)用程序,則還應(yīng)該聲明一個(gè)應(yīng)用程序類,并命名為CWinApp。在CWin
3、App類中,主要完成兩個(gè)功能:一是調(diào)用成員函數(shù)InitInstance()來完成窗口的設(shè)計(jì)、注冊(cè)、創(chuàng)建與顯示工作,二是調(diào)用成員函數(shù)Run()來實(shí)現(xiàn)消息循環(huán)。3.1.3主函數(shù)封裝后的程序?qū)Υ翱陬惡蛻?yīng)用程序類進(jìn)行封裝后,再來設(shè)計(jì)Windows應(yīng)用程序就顯得十分簡單了。圖3.1程序sample0301的運(yùn)行結(jié)果3.2派生類在3.2節(jié)中,將窗口類CFrameWnd和應(yīng)用程序類CWinApp封裝在一個(gè)類庫中,使用起來靈活了許多。但如果需要對(duì)應(yīng)用程序進(jìn)行個(gè)性化設(shè)計(jì),就不是那么容易了。例如,需要改變窗口的背景顏色,此時(shí)就需要修改系統(tǒng)提供的
4、窗口函數(shù)。為了解決這個(gè)問題,可以引用C++類的繼承性和多態(tài)性。程序員可以通過設(shè)計(jì)派生類來得到自己想要的應(yīng)用程序窗口。下面對(duì)派生類進(jìn)行詳細(xì)介紹。3.2.1應(yīng)用程序類的派生類應(yīng)用程序?qū)Ω鱾€(gè)類進(jìn)行了封裝,為了方便程序的設(shè)計(jì),需要對(duì)其進(jìn)行派生操作。為了讓派生類能更好地修改原有的屬性,在基類中要將一些成員函數(shù)設(shè)置為虛函數(shù)。這樣,在派生類中,可以重寫虛函數(shù)滿足特別的要求。圖3.2程序sample0302的運(yùn)行結(jié)果3.2.2窗口類的派生類與應(yīng)用程序類類似,窗口類也可以擁有自己的派生類。讀者可以參照創(chuàng)建應(yīng)用程序類的派生類的方法為窗口類創(chuàng)建派
5、生類,本書在此就不再詳細(xì)講解。在創(chuàng)建窗口類的派生類時(shí),有一個(gè)問題需要注意。由于在應(yīng)用程序類CWinApp中定義的窗體對(duì)象m_pMainWnd是CFrameWnd類型的,而現(xiàn)在需要使用CFrameWnd類的派生類來構(gòu)造此窗體對(duì)象。也就是說,在CWinApp類的Instance()函數(shù)中,先構(gòu)造一個(gè)CFrameWnd類的派生類的對(duì)象,然后將它賦值給m_pMainWnd。圖3.3程序sample0303的運(yùn)行結(jié)果小 結(jié)本章主要介紹了Windows應(yīng)用程序的面向?qū)ο笏枷?。面向?qū)ο笏枷爰橄笮?、封裝性、集成性和多態(tài)性于一體,提高了編
6、程的效率。本章內(nèi)容包括窗口類的聲明、應(yīng)用程序類的聲明、主函數(shù)封裝后的程序、應(yīng)用程序類的派生類和窗口類的派生類。這些內(nèi)容有些抽象,不易理解,所以請(qǐng)讀者重點(diǎn)掌握。第4章將要學(xué)習(xí)MFC應(yīng)用程序框架。上機(jī)指導(dǎo)實(shí)驗(yàn)一:聲明窗口類實(shí)例實(shí)驗(yàn)內(nèi)容聲明一個(gè)窗口類,并定義相關(guān)的成員函數(shù)。實(shí)驗(yàn)?zāi)康恼莆沾翱陬惖膶?shí)現(xiàn)過程。在窗口類中,應(yīng)該實(shí)現(xiàn)窗口類的設(shè)計(jì)、窗口類的注冊(cè)、窗口的創(chuàng)建和顯示等功能。實(shí)現(xiàn)思路在3.1.1節(jié)中介紹了如何聲明一個(gè)窗口類,參照該節(jié)內(nèi)容即可。實(shí)驗(yàn)二:聲明應(yīng)用程序類的派生類實(shí)驗(yàn)內(nèi)容聲明一個(gè)應(yīng)用程序類的派生類,并定義相關(guān)的成員函數(shù)。實(shí)驗(yàn)
7、目的掌握應(yīng)用程序類的實(shí)現(xiàn)過程。實(shí)現(xiàn)思路在3.2.1節(jié)中介紹了如何聲明一個(gè)應(yīng)用程序類的派生類,參照該節(jié)內(nèi)容即可。實(shí)驗(yàn)三:創(chuàng)建一個(gè)完整程序?qū)嶒?yàn)內(nèi)容創(chuàng)建一個(gè)應(yīng)用了窗體和應(yīng)用程序派生類的完整實(shí)例。實(shí)驗(yàn)?zāi)康撵柟痰?章和第3章的內(nèi)容。實(shí)現(xiàn)思路參照第2章和第3章所學(xué)的知識(shí)點(diǎn),創(chuàng)建一個(gè)應(yīng)用實(shí)例。