




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第13章 MFC功能包編程簡介VS08 SP1所含的VC08的MFC功能包MFC Feature Pack for Visual C+ 2021,在MFC 9.0的根底上增加137個新類及86個內(nèi)部類和1個新結(jié)構(gòu)。功能包對傳統(tǒng)MFC庫進(jìn)行了擴(kuò)展,以支持時髦的現(xiàn)代用戶界面元素,如Office Fluent流暢UI、停靠窗口和MDI選項(xiàng)卡tab窗口似Visual Studio 2005/2021、增強(qiáng)型工具條、豐富的新控件集、支持總體視覺樣式overall visual style、支持桌面報警desktop alerts等等。程序員可以利用該功能包編寫具有類似于微軟公司新版的Microsoft
2、Office、Visual Studio或Internet Explorer等流行界面視覺樣式的應(yīng)用程序。MFC功能包的改良主要表達(dá)在新型用戶界面上,主要包括:功能區(qū)ribbon、選項(xiàng)卡tab窗口和窗格pane、視覺樣式切換換膚、可??颗c自動隱藏的控制條和窗格等。MFC功能包的幫助信息,位于MSDN的“目錄開發(fā)工具和語言Visual Studio文檔Visual C+參考信息Libraries ReferenceMFC Feature Pack for Visual C+ 2008”,主要內(nèi)容在其“ReferenceClasses子目錄中。在VS2021中,MFC功能包已被完全并入MFC,所以
3、其幫助系統(tǒng)也被并入標(biāo)準(zhǔn)的MFC幫助系統(tǒng)之中,位于MSDN的“目錄開發(fā)工具和語言Visual Studio文檔Visual C+參考信息Libraries ReferenceMFC,主要內(nèi)容也在其“Classes子目錄中。13.1 新增功能MFC功能包在用戶界面方面增加了許多新功能,包括對傳統(tǒng)界面元素的改良和假設(shè)干新增的界面元素。13.1.1 傳統(tǒng)界面元素的改良MFC功能包,對菜單、工具條、對話框和控件等傳統(tǒng)界面元素,進(jìn)行了大量改良,以適應(yīng)時髦用戶界面的需要。1菜單在功能包中增了微軟Office新樣式的菜單和菜單條,可以??亢陀米岳L圖片定制,支持菜單陰影和滾動、菜單工具提示、運(yùn)行時的菜單字體修改
4、、菜單標(biāo)識的自繪、最近使用列表和窗口列表、右對齊的組合框、可去掉的菜單tear-off menus等,還支持菜單動畫,包括圖片淡入和漸顯、展開或滑進(jìn)視圖等。2工具條功能包中的新型工具條,支持大圖標(biāo)和雙臂章式double-chevron按鈕存在比當(dāng)前可見局部更多的按鈕,而且按鈕的圖片可在鼠標(biāo)懸浮于按鈕上時更換,并允許在圖片下顯示文本,還可以在菜單和工具提示中自動創(chuàng)立鍵盤快捷鍵。在新型工具條中,可包含鋼筋Rebar子窗口容器、標(biāo)準(zhǔn)的組合框和文本框按鈕、標(biāo)準(zhǔn)字體組合框和字體大小組合框按鈕、標(biāo)準(zhǔn)顏色選擇器控件,以及包含釘銷鈕的下拉式可移去窗格,還支持MS Office視覺樣式visual styles
5、和具有背景圖的透明工具條。不可定制的工具條。3控件功能包中新增和改良的控件有:URL鏈接鈕、裝飾有位圖圖片的按鈕、菜單鈕、可編輯列表、顏色選擇器控件、殼Shell樹控件、殼列表控件、屏蔽的Masked編輯控件、定制的Custom工具提示控件、包含瀏覽鈕的編輯控件、屬性格Property grid、MDI選項(xiàng)卡tab控件、支持諸如三維、Excel、OneNote等視覺樣式的選項(xiàng)卡控件。4對話框功能包中新增和改良的對話框有:Windows管理器對話框、Office樣式的顏色選擇對話框、圖片編輯器對話框、包含假設(shè)干控件諸如快捷條、樹控件或Office 2007樣式列表等的屬性單property sh
6、eets。13.1.2 新界面元素MFC功能包新增加的界面元素主要有窗格、功能區(qū)和選項(xiàng)卡。1窗格窗格Panes是一種窗口,通常是可調(diào)整大小、可移去和可??康摹4案裰С秩缦鹿δ埽篗S Office樣式的對話框條、支持圖片和??康腛ffice樣式的菜單條,MS Outlook樣式的快捷條shortcut bar、標(biāo)題條caption bar和任務(wù)窗格task pane,類似于工具條、屬性和瀏覽器窗格Visual Studio樣式的窗格。窗格還支持內(nèi)容和位置在應(yīng)用程序的屢次運(yùn)行之間持續(xù)不變的鋼筋Rebar控件、支持圖標(biāo)、動畫和進(jìn)度條狀態(tài)條和打印預(yù)覽效勞。2功能區(qū)控件功能區(qū)ribbon,緞絲帶/帶狀條
7、是新的Microsoft Office Fluent用戶界面的一局部,用來代替?zhèn)鹘y(tǒng)的菜單和工具條功能。在面板設(shè)計器中,功能區(qū)包含一些用于創(chuàng)立、編輯和導(dǎo)出面板及其元素的上下文工具。功能區(qū)控件支持:通用功能區(qū)特性features、Vista Aero集成默認(rèn)樣式為氣體主題theme、功能區(qū)窗格、功能區(qū)上下文的類別categories選項(xiàng)卡標(biāo)簽、功能區(qū)元素、功能區(qū)鍵提示keytips、功能區(qū)調(diào)色板圖表種類galleries、功能區(qū)用戶化定制、功能區(qū)最小工具條、功能區(qū)啟動Launch按鈕和主按鈕、功能區(qū)狀態(tài)條等。3選項(xiàng)卡窗口在MFC功能包的MDI應(yīng)用程序中,不再使用傳統(tǒng)的多個獨(dú)立子窗口作為文檔窗口,而
8、是使用位于主框架窗口客戶區(qū)的MDI選項(xiàng)卡窗口tabbed window組,簡稱為選項(xiàng)卡組tabbed groups。選項(xiàng)卡窗口可被垂直或水平排列,如果一個應(yīng)用程序具有多個MDI選項(xiàng)卡組,那么各組之間用分隔條splitter分開。MDI選項(xiàng)卡組具有如下特點(diǎn):應(yīng)用程序可動態(tài)創(chuàng)立選項(xiàng)卡窗口、應(yīng)用程序可垂直或水平排列選項(xiàng)卡窗口、選項(xiàng)卡窗口組被分隔條分開、用戶可使用分隔條來調(diào)整選項(xiàng)卡組的大小、用戶可在組間拖動單個選項(xiàng)卡、用戶可拖動單個選項(xiàng)卡來創(chuàng)立組、用戶可使用快捷菜單來移動選項(xiàng)卡或創(chuàng)立新組、應(yīng)用程序可以保存和裝入選項(xiàng)卡窗口的布局和MDI文檔列表、應(yīng)用程序還可以訪問單個選項(xiàng)卡組并修改它們的參數(shù)。 新增功能
9、MFC功能包新增加的其他功能有Outlook式的桌面報警、控件的定制、可視化管理和假設(shè)干特殊的功能和操作。1桌面報警微軟的Outlook式桌面報警Desktop Alert,顯示一個包含通知的彈出窗口,如Outlook收件箱中的通知郵件到達(dá)消息的窗口。 2定制用戶可自定義控件的顏色、圖片和文本等,包括:位于工具條和菜單之間的拖拉鈕drag button、使用簡單的位圖編輯器來編輯用戶定義的圖片、在運(yùn)行時創(chuàng)立自定義的工具條、定制上下文菜單、使用工具條定制菜單來快速定制工具條按鈕、使用菜單資源來自動創(chuàng)立用戶化類別customization categories、利用按下Alt鍵并拖曳工具條按鈕來定
10、制工具條、定制鼠標(biāo)事件處理、定制快捷鍵、保存和恢復(fù)工具條與菜單的狀態(tài)到注冊表、訪問工作區(qū)workspace管理器以保持定制的設(shè)置到注冊表、調(diào)用自定義工具等。3可視化MFC提供了可視化visualization管理器,它按照用戶選擇的視覺樣式來繪制控件??梢暬С諱icrosoft Office 2000/XP/2003/2007視覺樣式和視覺樣式。4特殊功能MFC支持如下操作:自動隱藏窗口、保存和裝入已翻開文檔的狀態(tài)、將假設(shè)干窗格停靠到浮動的袖珍mini框架窗口、混合圖片支持32位圖片、按從右到左RTL = Right-To-Left的格式顯示全球化文本、允許可達(dá)性accessibility支
11、持。MFC還支持運(yùn)行時改變窗口的停靠類型:標(biāo)準(zhǔn)在拖動窗口期間不畫窗口的內(nèi)容如Microsoft Visual Studio .NET 2003。立即在拖動窗口期間畫窗口的內(nèi)容如Microsoft Visio。靈巧Smart在拖動窗口期間畫窗口的內(nèi)容而且有一箭頭標(biāo)記指出窗口可停靠的位置如Microsoft Visual Studio 2005/2021。13.2 界面的切換與定制與傳統(tǒng)的MFC應(yīng)用程序不同,功能包應(yīng)用程序可以在運(yùn)行時由用戶來動態(tài)切換界面風(fēng)格和定制菜單與工具條等界面元素。下面我們通過一個簡單的例子,展示一下MFC功能包應(yīng)用程序界面的視覺樣式及主題的切換效果和強(qiáng)大的用戶自定義功能。
12、視覺樣式切換創(chuàng)立一個單文檔界面的MFC應(yīng)用程序FP1:在“MFC應(yīng)用程序向?qū)υ捒虻摹皯?yīng)用程序類型頁參見圖13-1,選中“應(yīng)用程序類型欄的“單個文檔單項(xiàng)選擇項(xiàng)、選中“工程類型欄的“MFC標(biāo)準(zhǔn)單項(xiàng)選擇項(xiàng),其它保持不變?nèi)纭耙曈X樣式和顏色欄的下拉式列表中為“Visual Studio 2005”選項(xiàng)、“啟用視覺樣式切換復(fù)選框是選中的,按“完成鈕生成FP1工程。直接編譯運(yùn)行的結(jié)果如圖13-2所示。圖13-1 在MFC應(yīng)用程序向?qū)е袉⒂靡曈X樣式切換圖13-2 Visual Studio 2005視覺樣式在應(yīng)用程序的“視圖菜單中有一個“應(yīng)用程序外觀子菜單,其中包含如下菜單項(xiàng):Windows 2000、Of
13、fice XP、Windows XP、Office 2003、Visual Studio.NET 2005默認(rèn)值、Office 2007藍(lán)色樣式、黑色樣式、銀色樣式、水綠色樣式,參見圖13-3。圖13-3 應(yīng)用程序外觀菜單默認(rèn)的視覺樣式為我們在在“MFC應(yīng)用程序向?qū)υ捒虻摹皯?yīng)用程序類型頁“視覺樣式和顏色欄的下拉式列表中所選中的選項(xiàng)Visual Studio 2005。圖13-4是假設(shè)干其它視覺樣式的效果圖: Windows XPOffice 2003 Office 2007的藍(lán)色樣式 Office 2007的黑色樣式圖13-4 局部視覺樣式13 自定義設(shè)置在程序的“視圖菜單的“工具欄和??看?/p>
14、口子菜單中,還有一個“自定義菜單項(xiàng),利用其彈出的對話框,用戶可以在程序運(yùn)行時進(jìn)行許多自定義設(shè)置似MS Word 2003,圖13-5是“自定義對話框的假設(shè)干設(shè)置頁。 “命令頁“工具欄頁 “鍵盤頁“菜單頁“選項(xiàng)頁圖13-5 “自定義對話框的假設(shè)干設(shè)置頁1增刪工具欄按鈕可以按工具欄右端的工具欄選項(xiàng)鈕,利用彈出的“添加或刪除按鈕子菜單中的“標(biāo)準(zhǔn)子菜單,來增/刪顯示/隱藏標(biāo)準(zhǔn)工具欄中的按鈕,參見圖13-6。圖13-6 “添加或刪除按鈕菜單中的“標(biāo)準(zhǔn)子菜單利用工具欄選項(xiàng)的“添加或刪除按鈕子菜單中的“自定義菜單項(xiàng)或利用程序“視圖菜單的“工具欄和??看翱谧硬藛沃械摹白远x菜單項(xiàng)彈出的“自定義對話框的“命令頁
15、,還可以使用各菜單中的菜單項(xiàng)來可視化地交互增刪、分組、調(diào)位工具欄上的按鈕或菜單項(xiàng)似MS Office和MS Visual Studio。2新建工具欄利用“自定義對話框的“工具欄頁參見圖13-7,可以在運(yùn)行時為應(yīng)用程序動態(tài)創(chuàng)立新的工具欄,并在其中增加假設(shè)干菜單項(xiàng)或按鈕。具體的做法是:圖13-7 “自定義對話框的“工具欄頁在對話框中按“新建鈕,在彈出的“工具欄名稱對話框中輸入新工具欄的名稱,如“編輯,按“確定關(guān)閉此對話框,參見圖13-8。圖13-8 “工具欄名稱對話框利用“自定義對話框的“命令頁,向出現(xiàn)的浮動空工具欄中添加假設(shè)干菜單項(xiàng)按鈕,如“編輯菜單中的“剪切、“復(fù)制和“粘貼菜單項(xiàng)按鈕:??梢詫?/p>
16、新加的工具欄??康阶约合矚g的位置,如標(biāo)準(zhǔn)工具欄之下,參見圖13-9。圖13-9 ??啃鹿ぞ邫诘綐?biāo)準(zhǔn)工具欄下3設(shè)置快捷鍵利用“自定義對話框的“鍵盤頁,可以在運(yùn)行時為應(yīng)用程序動態(tài)添加菜單項(xiàng)對應(yīng)的快捷鍵。具體做法是,在對話框中左上部的“類別欄的下拉式列表中選擇一菜單如“文件,在其下的“命令欄的列表中選擇一菜單項(xiàng)如“打印預(yù)覽,定位于對話框中下部的“按新快捷鍵欄下的文本編輯框,按快捷鍵組合鍵如Ctrl+R,再按對話框的“分配鈕完成操作,參見圖13-10。圖13-10 利用“自定義對話框的“鍵盤頁設(shè)置快捷鍵如果你選擇的組合鍵已經(jīng)被分配給了本程序的其它菜單項(xiàng)此時在該文本編輯框下面的“已分配給:之下,會顯示此
17、組合鍵所原來所對應(yīng)的菜單項(xiàng)名串,那么“分配鈕是灰色不可用的。另外,按對話框的“刪除鈕,可以刪除當(dāng)前菜單項(xiàng)的已有快捷鍵。按對話框的“全部重置鈕,可以恢復(fù)初始的快捷鍵設(shè)置你在程序運(yùn)行后所作的快捷鍵設(shè)置將全部作廢。4切換菜單利用“自定義對話框的“菜單頁左邊的“應(yīng)用程序框架菜單欄的“顯示菜單下拉式列表,可以在框架窗口的多個菜單中進(jìn)行強(qiáng)制切換,參見圖13-11。圖13-11 利用“自定義對話框的“菜單頁切換菜單例如,對多文檔界面的應(yīng)用程序,可以在未翻開子窗口時的含3個下拉菜單的“默認(rèn)菜單和翻開子窗口后的含5個下拉菜單的與應(yīng)用程序工程同名的菜單之間進(jìn)行強(qiáng)制切換。5編輯上下文菜單利用“自定義對話框的“菜單頁
18、右邊的“上下文菜單欄的“選擇上下文菜單下拉式列表,可以在選擇已有的上下文菜單如“編輯后,再切換到“命令頁,然后就可以通過鼠標(biāo)交互式可視操作來編輯該上下文菜單,包括增加、刪除、移位、分組菜單項(xiàng)等。參見下列圖13-12。a) 初始的“編輯上下文菜單b) 將文件菜單中的翻開等菜單項(xiàng)拖進(jìn)“編輯上下文菜單圖13-12 利用“自定義對話框的“菜單頁編輯上下文菜單6工具欄和菜單項(xiàng)選擇項(xiàng)利用“自定義對話框的“選項(xiàng)頁參見圖13-13上部的“工具欄,可以選擇是否“在工具欄上顯示屏幕提示即鼠標(biāo)懸浮時的tip,以及是否“在屏幕提示中顯示快捷鍵,它們的區(qū)別如:或。還可以在“選項(xiàng)頁中選擇工具欄是否使用“大圖標(biāo)參見圖13-
19、13。圖13-13 “自定義對話框的“選項(xiàng)頁與設(shè)置工具條上的圖標(biāo)大小利用 “選項(xiàng)頁下部的“個性化菜單和工具欄,選擇是否“菜單首先顯示最近使用的命令,以及是否在“短暫延遲后顯示完整菜單,參見圖13-14。 (a) 首先顯示最近使用的菜單項(xiàng) (b) 短暫延遲后顯示完整菜單 (c) 直接顯示完整菜單圖13-14 是否顯示完整菜單 窗口框架MFC功能包引入了全新的窗口框架,支持窗口??俊⒖刂茥l窗格、??空緱l、窗格容器、窗格分隔條、自動隱藏控制條、選項(xiàng)卡控制條和Outlook控制條等。.1 窗口??縈FC功能包引入了類似于Visual Studio界面的窗口??縟ocking功能。應(yīng)用程序的主框架窗口通
20、常由CFrameWndEx或CMDIFrameWndEx類表示,主框架也被稱為??空綿ock site。.2 控制條窗格在MFC功能包中,控制條被稱為窗格pane,是從CBasePane類派生的。而傳統(tǒng)控制條基類為CControlBar,參見圖13-15其中帶星號的為功能包新增類。圖13-15 控制條窗格類窗格的父窗口可為以下三種類型之一:停靠站、??織l、或袖珍框架窗口,參見圖13-16。圖13-16 MFC功能包創(chuàng)立的應(yīng)用程序有兩類窗格:大小不可調(diào)的及大小可調(diào)的。大小可調(diào)的窗格如狀態(tài)條和工具條可以使用分隔條splitter或滑條slider來調(diào)整大小。大小可調(diào)的窗格可構(gòu)成容器,即一個窗格中可
21、??考僭O(shè)干其他窗格,在它們之間用分隔條分開。但是,大小可調(diào)的窗格不能被粘接停靠到??織l。大小不可調(diào)的窗格從CPane類派生,而大小可調(diào)的窗格那么從CDockablePane類派生。.3 ??空驹趹?yīng)用程序中,??空綿ock site即主框架窗口擁有所有的窗格和袖珍框架窗口。停靠站包含一個CDockingManager成員,該成員維護(hù)著屬于此??空镜乃写案竦囊粋€列表。該列表是排好序的,使得在外部邊界上創(chuàng)立的窗格,被放在列表的開始處。在架構(gòu)framework重繪??空緯r,它會遍歷該列表,調(diào)整其中每個窗格的布局,以放入停靠站的當(dāng)前矩形范圍中。在你需要調(diào)整停靠布局時,可以調(diào)用AdjustDocking
22、Layout或RecalcLayout函數(shù),架構(gòu)會重定向這一調(diào)用到停靠管理器。.4 停靠條每個主框架窗口都可以沿其邊框放置??織l。停靠條dock bar是一個屬于CDockSite類的窗格。??織l可以接受派生于CPane的對象,如工具條。在主框架窗口初始化時,調(diào)用CBasePane類的EnableDocking函數(shù)來創(chuàng)立??織l、調(diào)用CDockablePane類的EnableAutoHideBars函數(shù)來激活自動隱藏條。EnableAutoHideBars創(chuàng)立CAutoHideDockSite對象,并放置它們緊鄰每個??織l。每個停靠條被分成假設(shè)干??啃衐ock row,??啃杏蒀DockingP
23、anesRow類表示。每個??啃邪粋€工具條列表。如果用戶停靠一個工具條或?qū)⒐ぞ邨l從一個??啃幸苿拥酵煌?織l的另一個??啃袝r,架構(gòu)會或者創(chuàng)立一個新的??啃胁⑾鄳?yīng)地調(diào)整停靠條的大??;或者放置該工具條到一個已存在的??啃猩?。.5 袖珍框架窗口袖珍框架窗口mini-frame window是一種位于迷你型框架窗口中的浮動窗格。它由只能包含唯一一個窗格的CMDITabInfo類和可以包含幾個窗格的CMultiPaneFrameWnd類來表示。你可以在代碼中,通過調(diào)用CBasePane:FloatPane函數(shù)來浮動窗格。當(dāng)窗格浮動后,架構(gòu)會自動創(chuàng)立一個袖珍框架窗口,而且該袖珍框架窗口成為浮動窗格的父
24、窗口。在浮動的窗格??繒r,架構(gòu)會重置其父窗口,而且浮動窗格變成一個??織l對工具條或一個??空緦Υ笮】筛淖兊拇案?。.6 窗格分隔條窗格分隔器pane divider也叫滑條slider或分隔條splitters,由CPaneDivider類表示。在用戶??看案駮r,架構(gòu)會創(chuàng)立窗格分隔條,不管該窗格是停靠在??空具€是另一個窗格之中。當(dāng)窗格??康酵?空緯r,窗格分隔條會調(diào)用默認(rèn)的窗格分隔條。默認(rèn)窗格分隔條,負(fù)責(zé)所有??窟M(jìn)停靠站的窗格的排列布局。停靠管理器維護(hù)著一個默認(rèn)窗格分隔條的列表和一個窗格的列表。??抗芾砥髫?fù)責(zé)所有停靠窗格的排列布局。.7 窗格容器所有大小可變的窗格,在相互停靠時,都被維護(hù)在由CPa
25、neContainer類表示的容器container中。每個容器都具有假設(shè)干指針,分別指向左窗格、右窗格、左子容器、右子容器、和左右局部之間的分隔條,其中的左和右不是指物理上的邊側(cè),而是標(biāo)識樹結(jié)構(gòu)的分支。用這種方式,我們可以建造一棵窗格和分隔條的樹,從而可達(dá)成復(fù)雜的窗格布局,改變窗格大小以使它們合在一起。CPaneContainer類維護(hù)容器樹,它也維護(hù)位于此樹中的兩個窗格和分隔條列表。窗格容器管理器,通常被植入帶有多個窗格的默認(rèn)滑條和袖珍框架窗口之中。.8 自動隱藏控制條在默認(rèn)情況下,每個CDockablePane都支持自動隱藏特性auto-hide feature。當(dāng)用戶單擊CDockab
26、lePane標(biāo)題上的釘栓pin鈕時,架構(gòu)會切換窗格到自動隱藏模式。為了處理單擊,架構(gòu)會創(chuàng)立一個CMFCAutoHideBar類和一個CMFCAutoHideButton類以及CMFCAutoHideBar對象。架構(gòu)將新的CMFCAutoHideBar放到CAutoHideDockSite中。架構(gòu)還將CMFCAutoHideButton附加到工具條。CDockingManager類維護(hù)CDockablePane。.9 選項(xiàng)卡控制條與Outlook條CMFCBaseTabCtrl類,實(shí)現(xiàn)具有可分標(biāo)簽tab選項(xiàng)卡tabbed窗口的根本功能。為了使用CMFCBaseTabCtrl對象,需在你的應(yīng)用程序
27、中初始化CBaseTabbedPane類。CBaseTabbedPane派生于CDockablePane,維護(hù)著一個指向CMFCBaseTabCtrl對象的指針。CBaseTabbedPane使用戶能夠停靠和調(diào)整選項(xiàng)卡控制條tabbed control bar的大小。可使用CDockablePane:AttachToTabWnd函數(shù),來動態(tài)創(chuàng)立被??亢蜆?biāo)注tabbed的控制條。Outlook景色條bar控件也是基于選項(xiàng)卡條的,對應(yīng)的類CMFCOutlookBar也派生于CBaseTabbedPane。Outlook條是一種選項(xiàng)卡窗格tabbed pane,具有Microsoft Outlook
28、 2000 或Outlook 2003中的導(dǎo)航窗格Navigation Pane的可視外觀。CMFCOutlookBar對象包含一個CMFCOutlookBarTabCtrl類的對象和一系列選項(xiàng)卡。選項(xiàng)卡tab可以是一個CMFCOutlookBarPane類對象,或是一個CWnd派生類的對象。對用戶來說,Outlook條表現(xiàn)為一系列按鈕和一個顯示區(qū)域,當(dāng)用戶單擊一個按鈕時,對應(yīng)的控件或窗格就被顯示出來。 應(yīng)用程序架構(gòu)MFC功能包增加了與傳統(tǒng)的應(yīng)用程序框架基類相對應(yīng)的擴(kuò)展類,我們可以利用這些類的手工編碼來創(chuàng)立多種具有功能包新界面的MFC應(yīng)用程序。.1 類層次結(jié)構(gòu)傳統(tǒng)的MFC應(yīng)用程序的架構(gòu)類參見圖
29、13-17下部,都是從MFC類庫中的對應(yīng)基類參見圖13-17上部派生的,可參見12.2節(jié)。為了能支持新圖形用戶界面,VC08的MFC功能包增加了這些基類的擴(kuò)展版參見圖13-17中部,如應(yīng)用程序類C*App的基類是從CWindApp派生的CWindAppEx類、單文檔應(yīng)用程序的主框架窗口類CMainFrame的基類是從CFrameWnd派生的CFrameWndEx類、多文檔應(yīng)用程序的主框架窗口類CMainFrame的基類是從CMDIFrameWnd派生的CMDIFrameWndEx類、多文檔應(yīng)用程序的子框架窗口類CChildFrame的基類是從CMDIChildWnd派生的CMDIChildWn
30、dEx類。文檔類和文檔模板類那么沒有變化。CObjectCCmdTargetCWndCWinTreadCWinAppCFrameWndCViewCScrollViewCDocTemplateCDocumentCSingleDocTemplateCMultiDocTemplateCTestAppCMainFrameCTestViewCChildFrameCTestDoc傳統(tǒng)MFC類你的應(yīng)用程序類CWinAppExCFrameWndExCMDIFrameWndCMDIChildWndCMDIFrameWndExCMDIChildWndExMFC功能包擴(kuò)展類圖13-17 MFC應(yīng)用程序工程Test中
31、的主要類及其基類許多新功能都依賴于新版本擴(kuò)展類CWinAppEx、CFrameWndEx和CMDIFrameWndEx,這些類代表著大多數(shù)MFC應(yīng)用程序的根底。這些新的基類提供了支持眾多新用戶界面功能如功能區(qū)、可停靠、可調(diào)整大小的窗口窗格、以及工作區(qū)持久性等所需的全部要素。.2 最小功能包應(yīng)用程序本小節(jié)的代碼顯示了可支持功能區(qū)欄的最小應(yīng)用程序?qū)ο?。程序的?yīng)用程序類CMinApp由CWinAppEx派生而來,可實(shí)現(xiàn)大家所熟悉的InitInstance成員函數(shù)通常用于創(chuàng)立應(yīng)用程序的主窗口。千萬不要忘記調(diào)用SetRegistryKey成員函數(shù)來設(shè)置應(yīng)用程序的注冊表位置,因?yàn)樾碌募軜?gòu)類都要依賴于它。然
32、后,InitInstance繼續(xù)以通常的方式創(chuàng)立主窗口。似中的最小MFC程序,需先創(chuàng)立一個名為Min的“Visual C+/Win32”的“Win32工程,在其“應(yīng)用程序設(shè)置頁中的“附加選項(xiàng)欄中,選中“空工程。并修改工程屬性中的“配置屬性/常規(guī)頁中的“工程默認(rèn)值欄的“MFC的使用為“在靜態(tài)庫中使用MFC或“在共享DLL中使用MFC。然后將下面的最小VC08 MFC功能包應(yīng)用程序的具體代碼之CPP文件添加到該工程中運(yùn)行結(jié)果如圖13-18所示:#include #include #include class CMainWindow : public CFrameWndEx public: CMai
33、nWindow();CMainWindow:CMainWindow() Create(NULL, /class name LMinimum Feature Pack CMyApp); /window nameclass CMinApp : public CWinAppEx public: virtual BOOL InitInstance();BOOL CMinApp:InitInstance() SetRegistryKey(LSYSUMinSample);/ 此處不能直接使用CFrameWndEx類的保護(hù)型默認(rèn)構(gòu)造函數(shù)m_pMainWnd = new CMainWindow; m_pMai
34、nWnd-ShowWindow(m_nCmdShow); m_pMainWnd-UpdateWindow(); return TRUE;CMinApp theApp;圖13-18 最小功能包應(yīng)用程序例.3 Office功能區(qū)用戶界面利用MFC的功能包,我們可以非常輕松地向MFC框架窗口,添加與Microsoft Office 2007系統(tǒng)功能區(qū)元素類似的功能區(qū)欄。從概念上講,功能區(qū)ribbon由多個被稱為類別category的選項(xiàng)卡tab組成,每個選項(xiàng)卡都承載著一組面板panel。反過來,這些面板又承載著功能區(qū)元素或控件,它們分別代表特定于應(yīng)用程序的各種操作。如果功能區(qū)承載著應(yīng)用程序按鈕左上角
35、的大圓按鈕,那么在用戶單擊應(yīng)用程序按鈕時所顯示的彈出窗口中也會顯示一個面板,它被視為功能區(qū)的主類別。CMFCRibbonBar類可實(shí)現(xiàn)功能區(qū)欄本身,而CMFCRibbonCMyAppButton類那么代表功能區(qū)欄所承載且顯示在窗口框架左上角的應(yīng)用程序按鈕。功能區(qū)欄通常是在WM_CREATE消息處理程序中創(chuàng)立和準(zhǔn)備的。要創(chuàng)立功能區(qū)欄,只需調(diào)用CMFCRibbonBar的Create成員函數(shù),以提供將其附加到其中的窗口框架的地址即可,然后根據(jù)需要填充它。AddMainCategory成員函數(shù)將主類別添加到功能區(qū),并返回一個指向CMFCRibbonMainPanel的指針,你可以利用它向其中添加將要
36、顯示在此面板中的功能區(qū)元素。通過調(diào)用AddCategory成員函數(shù),可向其中添加更多的類別來表示功能區(qū)的選項(xiàng)卡。AddCategory返回一個指向CMFCRibbonCategory對象你可使用其AddPanel成員函數(shù)向其中添加面板的指針。AddPanel返回一個指向CMFCRibbonPanel對象可像使用功能區(qū)的主面板一樣向其中添加功能區(qū)元素的指針。最后,你可使用CMFCVisualManager: SetDefaultManager靜態(tài)成員函數(shù)來設(shè)置負(fù)責(zé)處理框架窗口的樣式和外觀的可視化管理器。圖13-19顯示了功能區(qū)應(yīng)用程序的可能外觀,假定你已為功能區(qū)欄上的按鈕添加了必要的事件處理程序
37、。圖13-19 功能區(qū)應(yīng)用程序下面的代碼顯示了具有功能區(qū)欄和應(yīng)用程序按鈕的一個最小SDI框架窗口。其中的應(yīng)用程序按鈕并不是必需的,但通常會與功能區(qū)欄結(jié)合使用,為應(yīng)用程序提供各種各樣的主菜單,以代替?zhèn)鹘y(tǒng)的“文件菜單。class CMainWindow : public CFrameWndEx DECLARE_MESSAGE_MAP()public: CMainWindow(); int OnCreate(CREATESTRUCT* createStruct); CMFCRibbonBar m_ribbon; CMFCRibbonCMyAppButton m_appButton;BEGIN_MES
38、SAGE_MAP(CMainWindow, CFrameWndEx) ON_WM_CREATE()END_MESSAGE_MAP()CMainWindow:CMainWindow() Create(0/*class name*/, LMFC Ribbon Sample CMyApp/*window name*/);int CMainWindow:OnCreate(CREATESTRUCT* createStruct) if (-1 = _super:OnCreate(createStruct) return -1; if (-1 = m_ribbon.Create(this) return -
39、1; m_appButton.SetImage(IDB_APP_BUTTON); m_ribbon.SetCMyAppButton(&m_appButton, CSize(45, 45); CMFCRibbonMainPanel* appButtonMenu = m_ribbon.AddMainCategory(LMenu, IDB_APP_BUTTON_MENU_SMALL, IDB_APP_BUTTON_MENU_LARGE); appButtonMenu-Add(new CMFCRibbonButton(ID_FILE_NEW, L&New, 0, / small image index
40、 0); / large image index appButtonMenu-Add(new CMFCRibbonButton(ID_FILE_OPEN, L&Open., 1, / small image index 1); / large image indexappButtonMenu-AddToBottom(new CMFCRibbonMainPanelButton(ID_APP_EXIT, LE&xit, 15/*small image index*/);CMFCRibbonCategory* category = m_ribbon.AddCategory(LHome, IDB_RI
41、BBON_CAT_HOME_SMALL, IDB_RIBBON_CAT_HOME_LARGE); CMFCRibbonPanel* panel = category-AddPanel(LClipboard); panel-Add(new CMFCRibbonButton(ID_EDIT_PASTE, LPaste, 0, / small image index 0); / large image index panel-Add(new CMFCRibbonButton(ID_EDIT_CUT, LCut, 1); panel-Add(new CMFCRibbonButton(ID_EDIT_C
42、OPY, LCopy, 2); panel-Add(new CMFCRibbonButton(ID_EDIT_SELECT_ALL, LSelect All, -1); m_ribbon.AddCategory(LInsert, IDB_RIBBON_CAT_HOME_SMALL, IDB_RIBBON_CAT_HOME_LARGE); CMFCVisualManager:SetDefaultManager( RUNTIME_CLASS(CMFCVisualManagerOffice2007); CMFCVisualManagerOffice2007:SetStyle (CMFCVisualM
43、anagerOffice2007:Office2007_LunaBlue); return 0;.4 選項(xiàng)卡式多文檔界面MFC一直都支持 MDI 實(shí)現(xiàn)及其文檔/視圖體系結(jié)構(gòu),但圖13-20 a)中所示的傳統(tǒng) MDI早已過時,用戶可能會認(rèn)為你的應(yīng)用程序從Windows 95開始就再也沒有更新過?,F(xiàn)在,絕大多數(shù)用戶都期望可通過窗口邊緣的選項(xiàng)卡來訪問多個文檔,而這正是新的CMDIFrameWndEx MDI框架窗口所提供的功能,參見圖13-20 b)。 a) 傳統(tǒng)MDIb) 選項(xiàng)卡式MDI圖13-20 多文檔界面的MFC應(yīng)用程序我們需要更新多文檔/視圖應(yīng)用程序?qū)ο笠灾С中碌目蚣艽翱?。下面的代碼顯示了
44、滿足需要的最小選項(xiàng)卡式MDI應(yīng)用程序?qū)ο?。class CMyApp : public CWinAppEx DECLARE_MESSAGE_MAP()public: virtual BOOL InitInstance();BEGIN_MESSAGE_MAP(CMyApp, CWinAppEx) ON_COMMAND(ID_FILE_NEW, &CWinAppEx:OnFileNew)END_MESSAGE_MAP()BOOL CMyApp:InitInstance() SetRegistryKey(LSampleCompanySampleProduct); VERIFY(InitContextM
45、enuManager();AddDocTemplate(new CMultiDocTemplate(IDR_CHILDFRAME,RUNTIME_CLASS(Document),RUNTIME_CLASS(CMDIChildWndEx),RUNTIME_CLASS(View); CMainWindow* mainWindow = new CMainWindow(); VERIFY(mainWindow-LoadFrame(IDR_MAINFRAME); m_pMainWnd = mainWindow; m_pMainWnd-ShowWindow(m_nCmdShow); m_pMainWnd-
46、UpdateWindow(); return TRUE;它類似于傳統(tǒng)的 MDI 應(yīng)用程序?qū)ο螅袔c(diǎn)值得一提。首先,子窗口框架的運(yùn)行時類是CMDIChildWndEx,而非傳統(tǒng)的CMDIChildWnd類。要準(zhǔn)備在選項(xiàng)卡式視圖之間進(jìn)行切換時使用的菜單管理器,還需調(diào)用InitContextMenuManager函數(shù)。下面的代碼顯示了最小選項(xiàng)卡式MDI框架窗口。同樣,你會看到開啟此功能是多么地簡單。實(shí)際只需調(diào)用EnableMDITabbedGroups成員函數(shù)來啟用MDI選項(xiàng)卡式分組功能即可。CMDITabInfo類提供了各種成員變量,可使用它們來自定義選項(xiàng)卡式分組的外觀和行為。顧名思義,它甚至
47、還允許用戶拖動不同的視圖來創(chuàng)立垂直或水平對齊的選項(xiàng)卡組。class CMainWindow : public CMDIFrameWndEx DECLARE_DYNCREATE(CMainWindow) DECLARE_MESSAGE_MAP()private: int OnCreate(CREATESTRUCT* createStruct);IMPLEMENT_DYNCREATE(CMainWindow, CMDIFrameWndEx)BEGIN_MESSAGE_MAP(CMainWindow, CMDIFrameWndEx) ON_WM_CREATE()END_MESSAGE_MAP()in
48、t CMainWindow:OnCreate(CREATESTRUCT* createStruct) if (-1 = _super:OnCreate(createStruct) return -1; CMDITabInfo tabInfo; tabInfo.m_bAutoColor = true; tabInfo.m_bDocumentMenu = true; EnableMDITabbedGroups(true, tabInfo); return 0; 編寫功能區(qū)應(yīng)用程序功能區(qū)ribbon用于代替?zhèn)鹘y(tǒng)的菜單和工具條,是微軟公司推崇的新圖形界面。MFC功能包提供了對功能區(qū)界面的支持,但是卻沒
49、有提供功能區(qū)資源的交互式設(shè)計界面。即將推出的Visual C+ 2021MFC 10.0可彌補(bǔ)這一缺陷。 MFC功能包手工編程下面通過一個簡單的例子,來介紹如何用MFC功能包來創(chuàng)立一個新的功能區(qū)應(yīng)用程序,并在程序中手工添加自己的界面元素和代碼。此節(jié)所對應(yīng)的英文幫助文檔,位于VS08SP1的MSDN幫助系統(tǒng)的“目錄/開發(fā)工具和語言/Visual Studio/Visual C+/參考信息/Libraries Reference/MFC Feature Pack for Visual C+ 2021/Walkthroughs/Walkthrough: Create a New Ribbon App
50、lication By Using MFC之中。1創(chuàng)立功能區(qū)應(yīng)用程序工程選“文件新建工程菜單項(xiàng)、或按“Ctrl+Shift+N組合鍵、或選“起始頁創(chuàng)立工程選項(xiàng)。在彈出的“新建工程對話框中,在左邊的“工程類型欄中選“Visual C+MFC項(xiàng),在右邊的“模版欄中選“MFC應(yīng)用程序項(xiàng),在下邊的“位置欄選擇新工程目錄的父目錄所在的路徑如E:,在“名稱欄中鍵入你的程序工程名如Rib,不選中“創(chuàng)立解決方案的目錄選項(xiàng),按“確定鈕,參見圖13-21。圖13-21 新建工程對話框在彈出的“MFC應(yīng)用程序向?qū)υ捒虻臍g送頁中,按“下一步按鈕或單擊左欄中的“應(yīng)用程序類型項(xiàng),進(jìn)入該對話框的“應(yīng)用程序類型頁。在“應(yīng)用
51、程序類型頁右邊上部的“工程類型欄,選中“Office單項(xiàng)選擇鈕默認(rèn)是“Visual Studio。保持“視覺樣式和顏色欄下拉式列表中的默認(rèn)“Office 2007藍(lán)色主題條目不變,同時保持“啟用視覺樣式切換復(fù)選框被選中。該頁的其余選項(xiàng)也保持默認(rèn)設(shè)置不變,參見圖13-22。圖13-22 選擇工程類型和視覺樣式單擊左欄中的“用戶界面功能項(xiàng),進(jìn)入“MFC應(yīng)用程序向?qū)υ捒虻摹坝脩艚缑婀δ茼?。重要步驟在“用戶界面功能頁中,保持右邊“命令欄下部的“使用功能區(qū)單項(xiàng)選擇項(xiàng)被選中,參見下列圖13-23。圖13-23 選擇“使用功能區(qū)按“下一步鈕或單擊左邊的“高級功能項(xiàng),進(jìn)入“高級功能頁。為了簡單起見,我們這里
52、去選右邊“高級框架窗格欄中的所有復(fù)選框“導(dǎo)航窗格和“標(biāo)題欄默認(rèn)是選中的,參見圖13-24。圖13-24 去選高級框架窗格選項(xiàng)按“完成鈕關(guān)閉“MFC應(yīng)用程序向?qū)υ捒?,向?qū)詣由蓪?yīng)的工程。編譯運(yùn)行此工程,結(jié)果如圖13-25所示。圖13-25 功能區(qū)Office類型的MFC功能包應(yīng)用程序例可見,向?qū)槲覀兊膽?yīng)用程序自動創(chuàng)立了一個功能區(qū),含有一個功能區(qū)類別ribbon category選項(xiàng)卡tab,稱為主要Home。該功能區(qū)類別包含三個功能區(qū)面板ribbon panel分別叫做剪貼板Clipboard、視圖View和窗口Window。應(yīng)用程序功能區(qū)的其他菜單見圖13-26。a) 應(yīng)用程序大圖標(biāo)
53、的文件菜單b) 自定義快速訪問工具欄菜單c) 樣式菜單圖13-25 MFC功能包應(yīng)用程序的功能區(qū)菜單2添加類別到功能區(qū)由工程創(chuàng)立的功能區(qū)對象位于CMainFrame類的頭文件中:CMFCRibbonBar m_wndRibbonBar;為了向該功能區(qū)增加新的類別category對象,需要調(diào)用CMFCRibbonBar類的成員函數(shù)AddCategory:CMFCRibbonCategory* AddCategory( LPCTSTR lpszName, / 類別名,會出現(xiàn)在功能區(qū)的標(biāo)簽中 UINT uiSmallImagesResID, / 小圖片資源ID UINT uiLargeImagesR
54、esID, / 大圖片資源ID CSize sizeSmallImage=CSize(16, 16) 1, / 小圖片的尺寸,默認(rèn)為16*16 CSize sizeLargeImage=CSize(32, 32) 3, / 大圖片的尺寸,默認(rèn)為32*32 int nInsertAt=-1, / 插入位置序號,默認(rèn)值-1表示添加到已有功能區(qū)類別的后面 CRuntimeClass* pRTI=NULL / 指向運(yùn)行類的指針);在CMainFrame類的OnCreate函數(shù)的中部,已有如下兩行代碼用于創(chuàng)立和初始化功能區(qū)對象的:m_wndRibbonBar.Create(this); / 創(chuàng)立功能區(qū)控
55、件InitializeRibbon(); / 初始化定制功能區(qū)在CMainFrame類的InitializeRibbon函數(shù)的底部,我們添加如下代碼:/ 添加“定制類別對象:strTemp.LoadString(IDS_RIBBON_CUSTOM);CMFCRibbonCategory* pCategoryCustom =m_wndRibbonBar.AddCategory(strTemp, IDB_FILESMALL, IDB_FILELARGE);其中,strTemp 為原有的在InitializeRibbon函數(shù)起始處定義的局部串變量:CString strTemp;而CString 類
56、的LoadString成員函數(shù):BOOL LoadString( UINT nID );用于裝入指定ID的串資源;IDS_RIBBON_CUSTOM是我們自己在工程的串表String Table資源中增加的新類別名串“定制(&C)的ID;而IDB_FILESMALL和IDB_FILELARGE那么為已有的小和大文件圖片資源的ID。編譯運(yùn)行修改后的工程,結(jié)果是功能區(qū)中新增加了空的“定制類別對象,如圖13-26所示。圖13-26 添加“定制類別到功能區(qū)3添加面板到類別一個功能區(qū)面板ribbon pane內(nèi)含有一組邏輯相關(guān)的元素item。為了添加功能區(qū)面板到功能區(qū)類別,你可以使用CMFCRibbon
57、Category類的AddPanel method函數(shù):CMFCRibbonPanel* AddPanel( LPCTSTR lpszPanelName, / 面板名 HICON hIcon=0, / 圖標(biāo)句柄,用于快速訪問工具條 CRuntimeClass* pRTI=NULL / 指向運(yùn)行類的指針);例如,在CMainFrame類的InitializeRibbon函數(shù)的底部,在你剛剛的添加功能區(qū)類別的代碼后,添加如下代碼:/ 創(chuàng)立并添加“喜愛面板:strTemp.LoadString(IDS_RIBBON_FAVORITES);CMFCRibbonPanel* pPanelFavorite
58、s =pCategoryCustom-AddPanel(strTemp, m_PanelImages.ExtractIcon(15);其中,IDS_RIBBON_FAVORITES是我們自己在工程的串表資源中增加的新面板名串“喜愛的ID;m_PanelImages為工程創(chuàng)立時自動定義的一個CMFCToolBarImages類對象,已經(jīng)裝入了工程中已有的位圖資源IDB_BUTTONS對應(yīng)的位圖文件為res,含有27個圖標(biāo),參見圖13-27。圖13-27 工程的按鈕位圖資源IDB_BUTTONS參見InitializeRibbon函數(shù)頂部處的代碼:/ 加載面板圖像:m_PanelImages.Se
59、tImageSize(CSize(16, 16);m_PanelImages.Load(IDB_BUTTONS);而CMFCToolBarImages類的ExtractIcon成員函數(shù):HICON ExtractIcon( int nIndex );的功能是從工具條位圖中提取指定序號的圖片,并返回對應(yīng)圖標(biāo)的句柄。編譯運(yùn)行,結(jié)果如圖13-28所示。可見,在功能區(qū)的“定制類別選項(xiàng)卡的左邊,出現(xiàn)了一個“喜愛面板。圖13-28 添加“喜愛面板到“定制類別4添加元素到面板為了添加元素到上一步所創(chuàng)立的面板里,可以調(diào)用CMFCRibbonPanel類的Add方法:virtual void Add( CMFC
60、RibbonBaseElement* pElem );其中的CMFCRibbonBaseElement類,是所有能被添加到面板中的元素如按鈕、復(fù)選框、和組合框等的基類。我們首先添加一個“打印按鈕,它將具有一個子菜單,包含一個使用默認(rèn)打印機(jī)打印的“快速打印命令。這兩個命令都已經(jīng)被定義在此應(yīng)用程序的應(yīng)用程序大圖標(biāo)的菜單中。在CMainFrame類的InitializeRibbon函數(shù)的底部,在你剛剛的添加功能區(qū)面板的代碼后,添加如下代碼:/ 創(chuàng)立“快速打印按鈕:strTemp.LoadString(IDS_RIBBON_PRINT_QUICK);CMFCRibbonButton* pBtnFavP
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 IEC 60364-4-44:2024 RLV EN Low-voltage electrical installations - Part 4-44: Protection for safety - Protection against voltage disturbances and electromagnetic disturbances
- 2025-2030年中國采鹽行業(yè)市場運(yùn)營狀況及發(fā)展趨勢分析報告
- 2025-2030年中國酒店用品行業(yè)運(yùn)行態(tài)勢及發(fā)展前景分析報告
- 2025-2030年中國過硫酸鹽行業(yè)運(yùn)行狀況及發(fā)展前景分析報告
- 2025-2030年中國輕質(zhì)碳酸鈣行業(yè)競爭態(tài)勢與營銷策略研究報告
- 2025-2030年中國車輛專用照明及電氣信號設(shè)備制造市場十三五規(guī)劃與發(fā)展策略分析報告
- 2025-2030年中國螺絲刀行業(yè)運(yùn)行狀況及前景趨勢分析報告
- 2025-2030年中國船舶租賃市場運(yùn)行現(xiàn)狀及發(fā)展趨勢預(yù)測報告
- 2025-2030年中國膨化食品市場運(yùn)營狀況與發(fā)展策略分析報告
- 2025-2030年中國紙漿產(chǎn)業(yè)運(yùn)行狀況與前景趨勢分析報告
- Unit5 What day is it today?(教學(xué)設(shè)計)-2023-2024學(xué)年教科版(廣州)英語四年級下冊
- 法院生活費(fèi)申請書
- 2025年益陽醫(yī)學(xué)高等??茖W(xué)校高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 醫(yī)用氣體施工方案
- 2024 年陜西公務(wù)員考試行測試題(B 類)
- 【課件】學(xué)校后勤管理工作
- 2025-2030年中國聚丙烯酰胺(PAM)市場發(fā)展?fàn)顩r及未來投資戰(zhàn)略決策報告新版
- 幼兒園師德師風(fēng)培訓(xùn)內(nèi)容
- 課題申報書:產(chǎn)教融合背景下護(hù)理專業(yè)技能人才“崗課賽證”融通路徑研究
- 住宅小區(qū)消防設(shè)施檢查方案
- 《榜樣9》觀后感心得體會四
評論
0/150
提交評論