資源描述:
《《菜單和框架窗口》PPT課件.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第9講:菜單和框架窗口課程內(nèi)容安排Windows應(yīng)用程序的框架窗口Windows菜單和MFC菜單編輯器Windows應(yīng)用程序的快捷鍵命令處理的使用復(fù)文本編輯實(shí)例講解屬性表的開發(fā)過程課程內(nèi)容安排CPersistentFrame持續(xù)信息類的使用使用ActivateFrame()成員函數(shù)設(shè)置窗口尺寸和位置創(chuàng)建窗口之前的工作:PreCreateWindow成員函數(shù)控制欄狀態(tài)和Windows注冊(cè)表MDI應(yīng)用程序和持續(xù)框架Windows應(yīng)用程序的框架窗口主框架窗口包含標(biāo)題欄和菜單欄,而各種各樣的子窗口,其中包括工具欄、狀
2、態(tài)欄窗口和視圖窗口,則占據(jù)著主窗口的整個(gè)客戶區(qū)域。應(yīng)用程序就是通過框架和視圖之間的消息傳遞來控制框架和視圖之間的相互作用的。Windows菜單和MFC菜單編輯器菜單是Windows程序設(shè)計(jì)中一項(xiàng)重要的界面元素。通常,開發(fā)者可以為主窗口定義一個(gè)默認(rèn)的菜單資源,當(dāng)應(yīng)用程序創(chuàng)建窗口時(shí),該默認(rèn)的菜單會(huì)被自動(dòng)裝入。也可以定義一個(gè)與窗口無關(guān)的菜單資源,當(dāng)調(diào)用一些消息函數(shù)時(shí),可以自動(dòng)調(diào)入,如鼠標(biāo)右鍵的浮動(dòng)菜單。VC6.0提供了一個(gè)強(qiáng)大的菜單資源編輯器,通過這個(gè)菜單資源編輯器,開發(fā)者可以靈活地開發(fā)各種各樣的菜單,并且可以編輯
3、菜單的屬性等。Windows應(yīng)用程序的快捷鍵鍵盤加速鍵的編輯是在資源編輯框中的鍵盤加速鍵資源中命令處理的使用MFC應(yīng)用程序框架中,大多數(shù)命令消息都來自于應(yīng)用程序框架,但應(yīng)用程序框架并沒有對(duì)這些消息進(jìn)行處理,因此開發(fā)者要自主添加消息處理函數(shù)并且在消息處理函數(shù)的實(shí)現(xiàn)方面做一些工作。當(dāng)應(yīng)用程序接收到一個(gè)框架窗口命令時(shí),按照以下的順序進(jìn)行尋找相應(yīng)的消息控制函數(shù):(1)視圖。(2)文檔。(3)MDI子框架窗口。(4)MDI主框架窗口。(5)應(yīng)用程序。復(fù)文本編輯Windows有兩種文本編輯控件:普通的編輯控件和復(fù)文本編輯
4、通用控件。MFC提供了CEditView類和CRichEditView類,以支持復(fù)文本的功能。編輯視圖類:CEditView類復(fù)文本編輯視圖類:CRichEditView類復(fù)文本編輯控件類:CRichEditCtrl類實(shí)例講解實(shí)例9.1-快捷鍵和文本編輯使用屬性表的開發(fā)過程選項(xiàng)卡對(duì)話框形式的屬性表創(chuàng)建過程的步驟一般是:(1)創(chuàng)建若干個(gè)對(duì)話框,用于制作選項(xiàng)卡的子對(duì)話框。雖然對(duì)話框的大小沒有限制,不過為了方便起見,最好在尺寸上不要差別太大。(2)使用ClassWizard為每個(gè)對(duì)話框生成一個(gè)類,這些類可以取類似的
5、名字以表示這些子對(duì)話框相互之間的關(guān)系,并且,這些類的基類都是CPropertyPage類。(3)生成CPropertySheet類的派生類,并將子對(duì)話框類的對(duì)象添加到該類中。(4)使用Domal()函數(shù)生成屬性表的對(duì)話框。(5)添加Apply按鈕的消息處理函數(shù)。鼠標(biāo)右鍵調(diào)用的浮動(dòng)快捷菜單Windows菜單主要包括兩類:(1)頂層菜單:該菜單就是主框架窗口的頂級(jí)菜單,這個(gè)是前文常見的一種菜單。(2)彈出式菜單:這個(gè)前文雖然沒有提及,不過相信讀者在使用各種應(yīng)用軟件時(shí),都使用過彈出菜單,如鼠標(biāo)右鍵彈出的菜單列表。使
6、用彈出式的菜單實(shí)質(zhì)上就是通過獲取了一個(gè)指向某菜單的指針來進(jìn)行顯示CPersistentFrame持續(xù)信息類的使用CPersistentFrame類能夠記住以下的特性:(1)窗口尺寸(2)窗口位置(3)最大化狀態(tài)(4)最小化狀態(tài)(5)工具欄和狀態(tài)欄是否處于允許狀態(tài)以及它們的位置一切C++的類對(duì)象實(shí)際上也只能在內(nèi)存中運(yùn)行,它是怎么做到記憶的功能的呢?原因在于,當(dāng)用戶關(guān)閉又CPersistentFrame類創(chuàng)建的應(yīng)用程序時(shí),上述信息將會(huì)倍保存在Windows操作系統(tǒng)的注冊(cè)表里面,而Windows的注冊(cè)表是存放在磁盤
7、中的,因此就達(dá)到了記憶的效果。使用ActivateFrame()成員函數(shù)設(shè)置窗口尺寸和位置在一個(gè)MFC的單文檔應(yīng)用程序中,主框架窗口是視圖窗口的“父窗口”,父窗口的創(chuàng)建是先于子窗口的,改變框架窗口尺寸的關(guān)鍵在于CFrameWnd類的ActivateFrame成員函數(shù)。如果使用對(duì)派生類中的ActivateFrame成員函數(shù)進(jìn)行重載,開發(fā)者就可以調(diào)用CWnd::SetWindowPlacement函數(shù)來設(shè)置框架窗口的位置和尺寸,也可以設(shè)置控制欄的可視狀態(tài),而這些工作都是在框架窗口被顯示之前完成的。PreCreat
8、eWindow成員函數(shù)PreCreateWindow成員函數(shù)視在CWnd類層次上聲明的,這個(gè)函數(shù)是提供給開發(fā)者在窗口顯示之前可以重寫的一個(gè)虛擬函數(shù),而應(yīng)用程序框架在調(diào)用ActivateFrame成員函數(shù)函數(shù)之前必須調(diào)用PreCreateWindow成員函數(shù)。該函數(shù)有一個(gè)CREATESTRUCT結(jié)構(gòu)作為參數(shù),該結(jié)構(gòu)有兩個(gè)數(shù)據(jù)成員:style:風(fēng)格,如決定窗口是否有邊界、是否具有滾動(dòng)條和是否具有最小化框