![第菜單和框架窗口_第1頁(yè)](http://file4.renrendoc.com/view/323e6d6410c7784b8c26ab0ef35b5004/323e6d6410c7784b8c26ab0ef35b50041.gif)
![第菜單和框架窗口_第2頁(yè)](http://file4.renrendoc.com/view/323e6d6410c7784b8c26ab0ef35b5004/323e6d6410c7784b8c26ab0ef35b50042.gif)
![第菜單和框架窗口_第3頁(yè)](http://file4.renrendoc.com/view/323e6d6410c7784b8c26ab0ef35b5004/323e6d6410c7784b8c26ab0ef35b50043.gif)
![第菜單和框架窗口_第4頁(yè)](http://file4.renrendoc.com/view/323e6d6410c7784b8c26ab0ef35b5004/323e6d6410c7784b8c26ab0ef35b50044.gif)
![第菜單和框架窗口_第5頁(yè)](http://file4.renrendoc.com/view/323e6d6410c7784b8c26ab0ef35b5004/323e6d6410c7784b8c26ab0ef35b50045.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
會(huì)計(jì)學(xué)1第菜單和框架窗口9.2Windows菜單和MFC菜單編輯器菜單是Windows程序設(shè)計(jì)中一項(xiàng)重要的界面元素。通常,開(kāi)發(fā)者可以為主窗口定義一個(gè)默認(rèn)的菜單資源,當(dāng)應(yīng)用程序創(chuàng)建窗口時(shí),該默認(rèn)的菜單會(huì)被自動(dòng)裝入。也可以定義一個(gè)與窗口無(wú)關(guān)的菜單資源,當(dāng)調(diào)用一些消息函數(shù)時(shí),可以自動(dòng)調(diào)入,如鼠標(biāo)右鍵的浮動(dòng)菜單。菜單資源的設(shè)計(jì)定義了菜單的初始形態(tài)。菜單可以為不可選擇狀態(tài)(灰色),也可以有復(fù)選框標(biāo)記,菜單之間可以使用“組”的概念,為了直觀,不同的“組”可以由分割線來(lái)分割,也可以有多層彈出式菜單。如圖所示,該圖所示就是一個(gè)Windows應(yīng)用程序的菜單。Windows應(yīng)用程序菜單
第1頁(yè)/共23頁(yè)9.3Windows應(yīng)用程序的快捷鍵一般而言,除非是娛樂(lè)性地使用軟件,如電子游戲、音頻視頻點(diǎn)播,大多數(shù)應(yīng)用程序應(yīng)用使用鍵盤的頻率都大于使用鼠標(biāo),如文檔錄入,報(bào)表管理等,鍵盤加速鍵可以讓工作者始終都使用鍵盤,而不用反復(fù)在鍵盤和鼠標(biāo)之間進(jìn)行切換而浪費(fèi)使用應(yīng)用軟件的文職工作者的時(shí)間鍵盤加速鍵的編輯是在資源編輯框中的鍵盤加速鍵資源中,如圖所示。鍵盤加速鍵資源編輯器
第2頁(yè)/共23頁(yè)9.4命令處理的使用Windows應(yīng)用程序設(shè)計(jì)是基于消息處理的,Windows操作系統(tǒng)管理著一個(gè)消息隊(duì)列,這個(gè)消息隊(duì)列根據(jù)各種加權(quán)因子確定排隊(duì)次序,各種加權(quán)因子是:等待時(shí)間。消息優(yōu)先級(jí)別。是否有特殊優(yōu)先權(quán)限。而MFC應(yīng)用程序框架中,大多數(shù)命令消息都來(lái)自于應(yīng)用程序框架,但應(yīng)用程序框架并沒(méi)有對(duì)這些消息進(jìn)行處理,因此開(kāi)發(fā)者要自主添加消息處理函數(shù)并且在消息處理函數(shù)的實(shí)現(xiàn)方面做一些工作。這樣是不是說(shuō)明MFC沒(méi)有對(duì)消息處理做貢獻(xiàn)呢?不對(duì),MFC對(duì)消息處理函數(shù)做的貢獻(xiàn)主要在于有一個(gè)命令傳遞系統(tǒng),通過(guò)這個(gè)復(fù)雜的命令傳遞系統(tǒng),一方面減少了開(kāi)發(fā)者梳理這些煩雜的消息的開(kāi)發(fā)工作量,另一方面,也幾乎可以在程序中的任何地方對(duì)消息進(jìn)行控制。第3頁(yè)/共23頁(yè)9.5復(fù)文本編輯Windows有兩種文本編輯控件:普通的編輯控件和復(fù)文本編輯通用控件。MFC提供了CEditView類和CRichEditView類,以支持復(fù)文本的功能。第4頁(yè)/共23頁(yè)9.5.1編輯視圖類:CEditView類CEditView類是基于Windows的編輯控件,因此它具有所有編輯控件的特性,編輯控件的一般特點(diǎn)如下:文本不能超過(guò)64KB。不能設(shè)置混合字體。實(shí)現(xiàn)了剪貼板的剪切、復(fù)制和粘貼功能。第5頁(yè)/共23頁(yè)9.5.2復(fù)文本編輯視圖類:CRichEditView類CRichEditView類是復(fù)文本編輯控件所使用的類,它的特點(diǎn)是:支持大數(shù)量的文本數(shù)據(jù)。支持多種混合字體。具有普通編輯控件的一般性特點(diǎn)。第6頁(yè)/共23頁(yè)9.5.3復(fù)文本編輯控件類:CRichEditCtrl類CRichEditCtrl類是一個(gè)復(fù)文本控件類,開(kāi)發(fā)者可以使用該控件類來(lái)進(jìn)行開(kāi)發(fā)一個(gè)功能簡(jiǎn)單的文本編輯器。該控件常用的函數(shù)有:Create():創(chuàng)建復(fù)文本編輯控件的無(wú)模式對(duì)話框窗口。SetWindowPos():設(shè)置編輯窗口的大小和位置。GetWindowText():獲取控件的文本(純文本,不帶格式)。SetWindowText():設(shè)置控件的文本。GetModify():獲得一個(gè)標(biāo)記,判斷是否被修改。SetModify():設(shè)置修改標(biāo)記。GetSel():獲取用戶是否選取了文本的標(biāo)記。SetDefaultCharFormat():設(shè)置控件的默認(rèn)格式。SetSelectionCharFormat():設(shè)置選中的文本的格式。第7頁(yè)/共23頁(yè)9.6實(shí)例7.1-快捷鍵和文本編輯使用本節(jié)的實(shí)例是快捷鍵和復(fù)文本編輯控件的使用,讀者在進(jìn)行實(shí)例練習(xí)時(shí),可以學(xué)習(xí)到菜單和減速見(jiàn)時(shí)如何被傳遞到文本和視圖中的。第8頁(yè)/共23頁(yè)9.6.1基本框架和界面實(shí)現(xiàn)實(shí)例創(chuàng)建步驟如下:(1)單擊“File”菜單,選中“New”命令,新建VC項(xiàng)目。(2)創(chuàng)建MFC應(yīng)用程序項(xiàng)目,并命名為“ExEdit”。(3)創(chuàng)建“單文檔”的MFC應(yīng)用程序項(xiàng)目,應(yīng)用程序向?qū)У钠溆噙x項(xiàng)默認(rèn),單擊“Finish”按鈕完成應(yīng)用程序向?qū)Р⑸蓱?yīng)用程序框架。(4)新增菜單項(xiàng),并將菜單項(xiàng)命名為如表所示。(5)創(chuàng)建“更改字體”菜單項(xiàng)的彈出選項(xiàng)卡對(duì)話框。菜單命名和作用菜單名稱ID作用更改字體ID_ZITI更改字體、顏色和大小等屬性獲取文本ID_HUOQU獲取內(nèi)存中的文本存儲(chǔ)文本ID_STORE存儲(chǔ)當(dāng)前控件的文本第9頁(yè)/共23頁(yè)9.6.2快捷鍵設(shè)計(jì)設(shè)置快捷鍵也是軟件開(kāi)發(fā)項(xiàng)目中的重要工作??旖萱I添加列表
第10頁(yè)/共23頁(yè)9.6.3存儲(chǔ)和顯示文檔類中的文本為菜單項(xiàng)添加命令消息函數(shù),如表所示。添加命令消息函數(shù)ID消息成員函數(shù)ID_HUOQUCOMMANDOnHuoqu()ID_STORECOMMANDOnStore()ID_STOREUPDATE_COMMAND_UIOnUpdateStore()第11頁(yè)/共23頁(yè)9.6.4選項(xiàng)卡對(duì)話框的設(shè)計(jì)本小節(jié)是介紹選項(xiàng)卡菜單的制作。(1)應(yīng)該為IDD_DIALOG1對(duì)話框創(chuàng)建類,單擊“Insert”菜單,選中“NewClass”選項(xiàng),在彈出的對(duì)話框中新建一個(gè)與IDD_DIALOG1關(guān)聯(lián)的C++類,如圖所示。(2)將這些類連接起來(lái),合并成為一個(gè)選項(xiàng)卡頁(yè)。
創(chuàng)建與IDD_DIALOG1對(duì)話框關(guān)聯(lián)的類 字體屬性選項(xiàng)卡對(duì)話框效果圖
第12頁(yè)/共23頁(yè)9.6.5視圖類的功能實(shí)現(xiàn)編寫視圖類的代碼,使之完成顯示復(fù)文本控件的功能。(1)應(yīng)該在視圖類定義中添加一個(gè)文本字符串的格式化函數(shù)聲明:voidFormat(CHARFORMAT&cf);。(2)創(chuàng)建一個(gè)視圖類的消息處理函數(shù),(3)為視圖添加一個(gè)父類的指針,在“Page1.cpp”文件中,定義一個(gè)全局的指針:CView*g_pView;(4)在視圖類中添加相應(yīng)的WM_USERAPPLY消息處理函數(shù),在“ExEditView.h”文件中,視圖類定義中添加公有的消息函數(shù)定義如下:afx_msgLRESULTOnUserApply(WPARAMwParam,LPARAMlParam);并在“ExEditView.cpp”源文件中,安裝消息映射:ON_MESSAGE(WM_USERAPPLY,OnUserApply)第13頁(yè)/共23頁(yè)9.6.6運(yùn)行效果和實(shí)踐小結(jié)按F5鍵編譯并運(yùn)行該項(xiàng)目,并且單擊“轉(zhuǎn)換”菜單,選中“獲取文本”選項(xiàng),可以得到如圖所示的運(yùn)行效果。讀者可以增加控件中的文字,并嘗試使用“轉(zhuǎn)換”菜單中的“存儲(chǔ)文字”選項(xiàng),測(cè)試一下存儲(chǔ)功能,存儲(chǔ)之后,刪除控件中的文本,使用“獲取文本”選項(xiàng)看看顯示的內(nèi)容。讀者也可以嘗試測(cè)試一下字體的變化的功能,先輸入若干行的文字,然后選中其中一行,再單擊“編輯”,選中“更改字體”選項(xiàng),修改文字的屬性為:斜體+下劃線、紅色顏色,字體大小為20。執(zhí)行效果如圖所示。
運(yùn)行效果圖 字體屬性更改的運(yùn)行效果
第14頁(yè)/共23頁(yè)9.7屬性表的開(kāi)發(fā)過(guò)程屬性表這個(gè)概念對(duì)讀者來(lái)說(shuō)并不陌生,它允許開(kāi)發(fā)者或用戶在一個(gè)小的對(duì)話框里面設(shè)置很多分類的信息,這些分類信息可以以列表的形式展現(xiàn),也可以通過(guò)選項(xiàng)卡的方式來(lái)讓用戶選擇。在前文中其實(shí)已經(jīng)開(kāi)發(fā)了一個(gè)屬性表,這個(gè)就是選項(xiàng)卡對(duì)話框,因此,選項(xiàng)卡對(duì)話框形式的屬性表創(chuàng)建過(guò)程的步驟一般是:(1)創(chuàng)建若干個(gè)對(duì)話框,用于制作選項(xiàng)卡的子對(duì)話框。雖然對(duì)話框的大小沒(méi)有限制,不過(guò)為了方便起見(jiàn),最好在尺寸上不要差別太大。(2)使用ClassWizard為每個(gè)對(duì)話框生成一個(gè)類,這些類可以取類似的名字以表示這些子對(duì)話框相互之間的關(guān)系,并且,這些類的基類都是CPropertyPage類。(3)生成CPropertySheet類的派生類,并將子對(duì)話框類的對(duì)象添加到該類中。(4)使用Domal()函數(shù)生成屬性表的對(duì)話框。(5)添加Apply按鈕的消息處理函數(shù)。第15頁(yè)/共23頁(yè)9.8鼠標(biāo)右鍵調(diào)用的浮動(dòng)快捷菜單到目前為止,CMenu類是讀者沒(méi)有見(jiàn)過(guò)的一個(gè)類,通過(guò)理解該類名的中文意義,容易知道該類是一個(gè)菜單類。該類的對(duì)象可以用來(lái)表示各種各樣的Windows菜單,其中Windows菜單主要包括兩類:頂層菜單:該菜單就是主框架窗口的頂級(jí)菜單,這個(gè)是前文常見(jiàn)的一種菜單。彈出式菜單:這個(gè)前文雖然沒(méi)有提及,不過(guò)相信讀者在使用各種應(yīng)用軟件時(shí),都使用過(guò)彈出菜單,如鼠標(biāo)右鍵彈出的菜單列表。第16頁(yè)/共23頁(yè)9.9CPersistentFrame持續(xù)信息類的使用C++是在C的基礎(chǔ)上發(fā)展起來(lái)的,主要目的就是為了實(shí)現(xiàn)“帶類的C”,也就是為了定義一套可以進(jìn)行面向?qū)ο笤O(shè)計(jì)和研發(fā)的高級(jí)程序設(shè)計(jì)語(yǔ)言。因此,C++的一項(xiàng)重要任務(wù)是開(kāi)發(fā)一些能夠復(fù)用的“軟件模塊”,使軟件程序設(shè)計(jì)的工作也可以變得像硬件研發(fā)一樣,基于模塊的、可復(fù)用的工程項(xiàng)目。這種復(fù)用是完全沒(méi)有問(wèn)題的,如C++自帶了STL、還有使用在網(wǎng)絡(luò)編程方面的C++ACE庫(kù)等。而狀態(tài)的復(fù)用確實(shí)有些困難的,如常使用Windows操作系統(tǒng)的讀者可能會(huì)發(fā)現(xiàn)一個(gè)現(xiàn)象:有些應(yīng)用程序似乎能夠記住它們是否倍最小化到任務(wù)欄、或者最大化了,或者是非最小化也非最大化,這些狀態(tài),即使關(guān)閉了這個(gè)應(yīng)用程序,下次打開(kāi)依然會(huì)“記得”。第17頁(yè)/共23頁(yè)9.10使用ActivateFrame()成員函數(shù)設(shè)置窗口尺寸和位置在一個(gè)MFC的單文檔應(yīng)用程序中,主框架窗口是視圖窗口的“父窗口”,父窗口的創(chuàng)建是先于子窗口的,改變框架窗口尺寸的關(guān)鍵在于CFrameWnd類的ActivateFrame成員函數(shù)。如果使用對(duì)派生類中的ActivateFrame成員函數(shù)進(jìn)行重載,開(kāi)發(fā)者就可以調(diào)用CWnd::SetWindowPlacement函數(shù)來(lái)設(shè)置框架窗口的位置和尺寸,也可以設(shè)置控制欄的可視狀態(tài),而這些工作都是在框架窗口被顯示之前完成的。第18頁(yè)/共23頁(yè)9.11創(chuàng)建窗口之前的工作:PreCreateWindow成員函數(shù)PreCreateWindow成員函數(shù)視在CWnd類層次上聲明的,這個(gè)函數(shù)是提供給開(kāi)發(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)條和是否具有最小化框等。dwExStyle:擴(kuò)展的風(fēng)格,一些擴(kuò)展的風(fēng)格,如視圖總在最前面等。第19頁(yè)/共23頁(yè)9.12控制欄狀態(tài)和Windows注冊(cè)表在Win16年代,存儲(chǔ)軟件狀態(tài)信息一般是使用INI文件,而現(xiàn)在普遍都使用了Win32系統(tǒng),INI文件還是在使用的,只是微軟公司建議開(kāi)發(fā)者少使用INI文件而應(yīng)該多使用Windows注冊(cè)表。Windows注冊(cè)表實(shí)際就是一組系統(tǒng)文件,是一種層次數(shù)據(jù)庫(kù),由Windows操作系統(tǒng)管理,讓W(xué)indows系統(tǒng)和其他應(yīng)用軟件可以在注冊(cè)表中保存一些永久信息。MFC庫(kù)提供了兩個(gè)CFrameWnd成員函數(shù):SaveBarState():存儲(chǔ)狀態(tài)欄信息。LoadBarState():加載狀態(tài)欄信息。以上的兩個(gè)函數(shù)可以處理應(yīng)用程序的狀態(tài)欄和貼邊工具欄的大小和位置。第20頁(yè)/共23頁(yè)9.13MDI應(yīng)用程序和持續(xù)框架本章所講述的CPersistentFrame類并不適用于MDI(多文檔)應(yīng)用程序,因?yàn)镸DI主框架窗口中的ShowWindow函數(shù)是由應(yīng)用程序類的InitInstance成員函數(shù)來(lái)調(diào)用,而沒(méi)有用
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年全球及中國(guó)中置電機(jī)自行車行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)PTZ電子體積校正器行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)軍用飛行器模擬器行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)工業(yè)木鋸機(jī)行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 期末測(cè)試卷01【考試范圍:6-10單元】(原卷版)
- 2025國(guó)際商業(yè)代理合同詳細(xì)版樣本
- 擔(dān)保合同范文集錦年
- 健身房私教合同范文
- 電力設(shè)備采購(gòu)合同模板
- 2025XL數(shù)字地震儀器租賃合同
- 《瘋狂動(dòng)物城》全本臺(tái)詞中英文對(duì)照
- 中專數(shù)學(xué)(基礎(chǔ)模塊)上冊(cè)課件
- 高考作文復(fù)習(xí)任務(wù)驅(qū)動(dòng)型作文的審題立意課件73張
- 品質(zhì)部經(jīng)理KRA KPI考核表
- 國(guó)家中小學(xué)智慧教育平臺(tái)推動(dòng)家校共育
- 《馬克思主義與社會(huì)科學(xué)方法論》授課教案
- 一個(gè)28歲的漂亮小媳婦在某公司打工-被老板看上之后
- 馬工程教育哲學(xué)課件第十章 教育哲學(xué)與教師發(fā)展
- GB/T 11376-2020金屬及其他無(wú)機(jī)覆蓋層金屬的磷化膜
- 成功源于自律 主題班會(huì)課件(共34張ppt)
- 新青島版(五年制)五年級(jí)下冊(cè)小學(xué)數(shù)學(xué)全冊(cè)導(dǎo)學(xué)案(學(xué)前預(yù)習(xí)單)
評(píng)論
0/150
提交評(píng)論