第菜單和框架窗口_第1頁
第菜單和框架窗口_第2頁
第菜單和框架窗口_第3頁
第菜單和框架窗口_第4頁
第菜單和框架窗口_第5頁
已閱讀5頁,還剩18頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

會計學(xué)1第菜單和框架窗口9.2Windows菜單和MFC菜單編輯器菜單是Windows程序設(shè)計中一項重要的界面元素。通常,開發(fā)者可以為主窗口定義一個默認(rèn)的菜單資源,當(dāng)應(yīng)用程序創(chuàng)建窗口時,該默認(rèn)的菜單會被自動裝入。也可以定義一個與窗口無關(guān)的菜單資源,當(dāng)調(diào)用一些消息函數(shù)時,可以自動調(diào)入,如鼠標(biāo)右鍵的浮動菜單。菜單資源的設(shè)計定義了菜單的初始形態(tài)。菜單可以為不可選擇狀態(tài)(灰色),也可以有復(fù)選框標(biāo)記,菜單之間可以使用“組”的概念,為了直觀,不同的“組”可以由分割線來分割,也可以有多層彈出式菜單。如圖所示,該圖所示就是一個Windows應(yīng)用程序的菜單。Windows應(yīng)用程序菜單

第1頁/共23頁9.3Windows應(yīng)用程序的快捷鍵一般而言,除非是娛樂性地使用軟件,如電子游戲、音頻視頻點播,大多數(shù)應(yīng)用程序應(yīng)用使用鍵盤的頻率都大于使用鼠標(biāo),如文檔錄入,報表管理等,鍵盤加速鍵可以讓工作者始終都使用鍵盤,而不用反復(fù)在鍵盤和鼠標(biāo)之間進(jìn)行切換而浪費使用應(yīng)用軟件的文職工作者的時間鍵盤加速鍵的編輯是在資源編輯框中的鍵盤加速鍵資源中,如圖所示。鍵盤加速鍵資源編輯器

第2頁/共23頁9.4命令處理的使用Windows應(yīng)用程序設(shè)計是基于消息處理的,Windows操作系統(tǒng)管理著一個消息隊列,這個消息隊列根據(jù)各種加權(quán)因子確定排隊次序,各種加權(quán)因子是:等待時間。消息優(yōu)先級別。是否有特殊優(yōu)先權(quán)限。而MFC應(yīng)用程序框架中,大多數(shù)命令消息都來自于應(yīng)用程序框架,但應(yīng)用程序框架并沒有對這些消息進(jìn)行處理,因此開發(fā)者要自主添加消息處理函數(shù)并且在消息處理函數(shù)的實現(xiàn)方面做一些工作。這樣是不是說明MFC沒有對消息處理做貢獻(xiàn)呢?不對,MFC對消息處理函數(shù)做的貢獻(xiàn)主要在于有一個命令傳遞系統(tǒng),通過這個復(fù)雜的命令傳遞系統(tǒng),一方面減少了開發(fā)者梳理這些煩雜的消息的開發(fā)工作量,另一方面,也幾乎可以在程序中的任何地方對消息進(jìn)行控制。第3頁/共23頁9.5復(fù)文本編輯Windows有兩種文本編輯控件:普通的編輯控件和復(fù)文本編輯通用控件。MFC提供了CEditView類和CRichEditView類,以支持復(fù)文本的功能。第4頁/共23頁9.5.1編輯視圖類:CEditView類CEditView類是基于Windows的編輯控件,因此它具有所有編輯控件的特性,編輯控件的一般特點如下:文本不能超過64KB。不能設(shè)置混合字體。實現(xiàn)了剪貼板的剪切、復(fù)制和粘貼功能。第5頁/共23頁9.5.2復(fù)文本編輯視圖類:CRichEditView類CRichEditView類是復(fù)文本編輯控件所使用的類,它的特點是:支持大數(shù)量的文本數(shù)據(jù)。支持多種混合字體。具有普通編輯控件的一般性特點。第6頁/共23頁9.5.3復(fù)文本編輯控件類:CRichEditCtrl類CRichEditCtrl類是一個復(fù)文本控件類,開發(fā)者可以使用該控件類來進(jìn)行開發(fā)一個功能簡單的文本編輯器。該控件常用的函數(shù)有:Create():創(chuàng)建復(fù)文本編輯控件的無模式對話框窗口。SetWindowPos():設(shè)置編輯窗口的大小和位置。GetWindowText():獲取控件的文本(純文本,不帶格式)。SetWindowText():設(shè)置控件的文本。GetModify():獲得一個標(biāo)記,判斷是否被修改。SetModify():設(shè)置修改標(biāo)記。GetSel():獲取用戶是否選取了文本的標(biāo)記。SetDefaultCharFormat():設(shè)置控件的默認(rèn)格式。SetSelectionCharFormat():設(shè)置選中的文本的格式。第7頁/共23頁9.6實例7.1-快捷鍵和文本編輯使用本節(jié)的實例是快捷鍵和復(fù)文本編輯控件的使用,讀者在進(jìn)行實例練習(xí)時,可以學(xué)習(xí)到菜單和減速見時如何被傳遞到文本和視圖中的。第8頁/共23頁9.6.1基本框架和界面實現(xiàn)實例創(chuàng)建步驟如下:(1)單擊“File”菜單,選中“New”命令,新建VC項目。(2)創(chuàng)建MFC應(yīng)用程序項目,并命名為“ExEdit”。(3)創(chuàng)建“單文檔”的MFC應(yīng)用程序項目,應(yīng)用程序向?qū)У钠溆噙x項默認(rèn),單擊“Finish”按鈕完成應(yīng)用程序向?qū)Р⑸蓱?yīng)用程序框架。(4)新增菜單項,并將菜單項命名為如表所示。(5)創(chuàng)建“更改字體”菜單項的彈出選項卡對話框。菜單命名和作用菜單名稱ID作用更改字體ID_ZITI更改字體、顏色和大小等屬性獲取文本ID_HUOQU獲取內(nèi)存中的文本存儲文本ID_STORE存儲當(dāng)前控件的文本第9頁/共23頁9.6.2快捷鍵設(shè)計設(shè)置快捷鍵也是軟件開發(fā)項目中的重要工作。快捷鍵添加列表

第10頁/共23頁9.6.3存儲和顯示文檔類中的文本為菜單項添加命令消息函數(shù),如表所示。添加命令消息函數(shù)ID消息成員函數(shù)ID_HUOQUCOMMANDOnHuoqu()ID_STORECOMMANDOnStore()ID_STOREUPDATE_COMMAND_UIOnUpdateStore()第11頁/共23頁9.6.4選項卡對話框的設(shè)計本小節(jié)是介紹選項卡菜單的制作。(1)應(yīng)該為IDD_DIALOG1對話框創(chuàng)建類,單擊“Insert”菜單,選中“NewClass”選項,在彈出的對話框中新建一個與IDD_DIALOG1關(guān)聯(lián)的C++類,如圖所示。(2)將這些類連接起來,合并成為一個選項卡頁。

創(chuàng)建與IDD_DIALOG1對話框關(guān)聯(lián)的類 字體屬性選項卡對話框效果圖

第12頁/共23頁9.6.5視圖類的功能實現(xiàn)編寫視圖類的代碼,使之完成顯示復(fù)文本控件的功能。(1)應(yīng)該在視圖類定義中添加一個文本字符串的格式化函數(shù)聲明:voidFormat(CHARFORMAT&cf);。(2)創(chuàng)建一個視圖類的消息處理函數(shù),(3)為視圖添加一個父類的指針,在“Page1.cpp”文件中,定義一個全局的指針:CView*g_pView;(4)在視圖類中添加相應(yīng)的WM_USERAPPLY消息處理函數(shù),在“ExEditView.h”文件中,視圖類定義中添加公有的消息函數(shù)定義如下:afx_msgLRESULTOnUserApply(WPARAMwParam,LPARAMlParam);并在“ExEditView.cpp”源文件中,安裝消息映射:ON_MESSAGE(WM_USERAPPLY,OnUserApply)第13頁/共23頁9.6.6運行效果和實踐小結(jié)按F5鍵編譯并運行該項目,并且單擊“轉(zhuǎn)換”菜單,選中“獲取文本”選項,可以得到如圖所示的運行效果。讀者可以增加控件中的文字,并嘗試使用“轉(zhuǎn)換”菜單中的“存儲文字”選項,測試一下存儲功能,存儲之后,刪除控件中的文本,使用“獲取文本”選項看看顯示的內(nèi)容。讀者也可以嘗試測試一下字體的變化的功能,先輸入若干行的文字,然后選中其中一行,再單擊“編輯”,選中“更改字體”選項,修改文字的屬性為:斜體+下劃線、紅色顏色,字體大小為20。執(zhí)行效果如圖所示。

運行效果圖 字體屬性更改的運行效果

第14頁/共23頁9.7屬性表的開發(fā)過程屬性表這個概念對讀者來說并不陌生,它允許開發(fā)者或用戶在一個小的對話框里面設(shè)置很多分類的信息,這些分類信息可以以列表的形式展現(xiàn),也可以通過選項卡的方式來讓用戶選擇。在前文中其實已經(jīng)開發(fā)了一個屬性表,這個就是選項卡對話框,因此,選項卡對話框形式的屬性表創(chuàng)建過程的步驟一般是:(1)創(chuàng)建若干個對話框,用于制作選項卡的子對話框。雖然對話框的大小沒有限制,不過為了方便起見,最好在尺寸上不要差別太大。(2)使用ClassWizard為每個對話框生成一個類,這些類可以取類似的名字以表示這些子對話框相互之間的關(guān)系,并且,這些類的基類都是CPropertyPage類。(3)生成CPropertySheet類的派生類,并將子對話框類的對象添加到該類中。(4)使用Domal()函數(shù)生成屬性表的對話框。(5)添加Apply按鈕的消息處理函數(shù)。第15頁/共23頁9.8鼠標(biāo)右鍵調(diào)用的浮動快捷菜單到目前為止,CMenu類是讀者沒有見過的一個類,通過理解該類名的中文意義,容易知道該類是一個菜單類。該類的對象可以用來表示各種各樣的Windows菜單,其中Windows菜單主要包括兩類:頂層菜單:該菜單就是主框架窗口的頂級菜單,這個是前文常見的一種菜單。彈出式菜單:這個前文雖然沒有提及,不過相信讀者在使用各種應(yīng)用軟件時,都使用過彈出菜單,如鼠標(biāo)右鍵彈出的菜單列表。第16頁/共23頁9.9CPersistentFrame持續(xù)信息類的使用C++是在C的基礎(chǔ)上發(fā)展起來的,主要目的就是為了實現(xiàn)“帶類的C”,也就是為了定義一套可以進(jìn)行面向?qū)ο笤O(shè)計和研發(fā)的高級程序設(shè)計語言。因此,C++的一項重要任務(wù)是開發(fā)一些能夠復(fù)用的“軟件模塊”,使軟件程序設(shè)計的工作也可以變得像硬件研發(fā)一樣,基于模塊的、可復(fù)用的工程項目。這種復(fù)用是完全沒有問題的,如C++自帶了STL、還有使用在網(wǎng)絡(luò)編程方面的C++ACE庫等。而狀態(tài)的復(fù)用確實有些困難的,如常使用Windows操作系統(tǒng)的讀者可能會發(fā)現(xiàn)一個現(xiàn)象:有些應(yīng)用程序似乎能夠記住它們是否倍最小化到任務(wù)欄、或者最大化了,或者是非最小化也非最大化,這些狀態(tài),即使關(guān)閉了這個應(yīng)用程序,下次打開依然會“記得”。第17頁/共23頁9.10使用ActivateFrame()成員函數(shù)設(shè)置窗口尺寸和位置在一個MFC的單文檔應(yīng)用程序中,主框架窗口是視圖窗口的“父窗口”,父窗口的創(chuàng)建是先于子窗口的,改變框架窗口尺寸的關(guān)鍵在于CFrameWnd類的ActivateFrame成員函數(shù)。如果使用對派生類中的ActivateFrame成員函數(shù)進(jìn)行重載,開發(fā)者就可以調(diào)用CWnd::SetWindowPlacement函數(shù)來設(shè)置框架窗口的位置和尺寸,也可以設(shè)置控制欄的可視狀態(tài),而這些工作都是在框架窗口被顯示之前完成的。第18頁/共23頁9.11創(chuàng)建窗口之前的工作:PreCreateWindow成員函數(shù)PreCreateWindow成員函數(shù)視在CWnd類層次上聲明的,這個函數(shù)是提供給開發(fā)者在窗口顯示之前可以重寫的一個虛擬函數(shù),而應(yīng)用程序框架在調(diào)用ActivateFrame成員函數(shù)函數(shù)之前必須調(diào)用PreCreateWindow成員函數(shù)。該函數(shù)有一個CREATESTRUCT結(jié)構(gòu)作為參數(shù),該結(jié)構(gòu)有兩個數(shù)據(jù)成員:style:風(fēng)格,如決定窗口是否有邊界、是否具有滾動條和是否具有最小化框等。dwExStyle:擴(kuò)展的風(fēng)格,一些擴(kuò)展的風(fēng)格,如視圖總在最前面等。第19頁/共23頁9.12控制欄狀態(tài)和Windows注冊表在Win16年代,存儲軟件狀態(tài)信息一般是使用INI文件,而現(xiàn)在普遍都使用了Win32系統(tǒng),INI文件還是在使用的,只是微軟公司建議開發(fā)者少使用INI文件而應(yīng)該多使用Windows注冊表。Windows注冊表實際就是一組系統(tǒng)文件,是一種層次數(shù)據(jù)庫,由Windows操作系統(tǒng)管理,讓W(xué)indows系統(tǒng)和其他應(yīng)用軟件可以在注冊表中保存一些永久信息。MFC庫提供了兩個CFrameWnd成員函數(shù):SaveBarState():存儲狀態(tài)欄信息。LoadBarState():加載狀態(tài)欄信息。以上的兩個函數(shù)可以處理應(yīng)用程序的狀態(tài)欄和貼邊工具欄的大小和位置。第20頁/共23頁9.13MDI應(yīng)用程序和持續(xù)框架本章所講述的CPersistentFrame類并不適用于MDI(多文檔)應(yīng)用程序,因為MDI主框架窗口中的ShowWindow函數(shù)是由應(yīng)用程序類的InitInstance成員函數(shù)來調(diào)用,而沒有用

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論