單文檔與多文檔課件_第1頁(yè)
單文檔與多文檔課件_第2頁(yè)
單文檔與多文檔課件_第3頁(yè)
單文檔與多文檔課件_第4頁(yè)
單文檔與多文檔課件_第5頁(yè)
已閱讀5頁(yè),還剩46頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第 11章 單文檔與多文檔 本章主要介紹Visual C+中的文檔/視圖結(jié)構(gòu)的工作機(jī)制 111.1 概述 211.1.1單文檔界面與多文檔界面 VC的MFC庫(kù)支持三種不同的應(yīng)用程序單文檔界面(SDI)多文檔界面(MDI)基于對(duì)話框的應(yīng)用程序SDI的應(yīng)用程序只有一個(gè)窗口MDI的應(yīng)用程序每次可以讀寫多個(gè)文件或文檔,可同時(shí)對(duì)多個(gè)文檔進(jìn)行操作,可以有多個(gè)子窗口主要差別在創(chuàng)建SDI界面的應(yīng)用程序時(shí),不生成CChildFrame類,CMainFrame類的基類為CFrameWnd在創(chuàng)建MDI界面的應(yīng)用程序時(shí),CMainFrame類的基類為CMDIFrameWnd使用AppWizard創(chuàng)建SDI和MDI界面

2、的應(yīng)用程序的過(guò)程幾乎完全一樣3由于每一個(gè)文檔可以有多個(gè)視圖,但每個(gè)視圖只能對(duì)應(yīng)于一個(gè)確定的文檔多文檔程序需要解決的問題僅僅是多個(gè)文檔的數(shù)據(jù)管理方法的問題多文檔程序,最初的文檔模板只支持主窗口,但每次打開一個(gè)新文檔時(shí)都調(diào)用CDocument的函數(shù)OnNewDocument,建立一個(gè)由CMDIChildWnd派生的新的MDI子窗口,這些窗口中保存著各種已打開的文檔,所有的細(xì)節(jié)都由MFC庫(kù)處理視圖是文檔的不同表現(xiàn)形式,一個(gè)*.html語(yǔ)言的文件,在瀏覽器里和在記事本中打開的表現(xiàn)形式是不同的但它們操作的是同一個(gè)文件這就是一個(gè)文檔對(duì)應(yīng)兩視圖4文檔/視圖結(jié)構(gòu)的工作機(jī)制視圖通過(guò)GetDocument成員函數(shù)

3、獲得指向相關(guān)聯(lián)的文檔對(duì)象的指針通過(guò)該指針調(diào)用文檔類的成員函數(shù)來(lái)從文檔中讀取數(shù)據(jù)視圖把數(shù)據(jù)顯示于計(jì)算機(jī)屏幕上用戶通過(guò)與視圖的交互來(lái)查看數(shù)據(jù)并對(duì)數(shù)據(jù)進(jìn)行修改視圖通過(guò)相關(guān)聯(lián)的文檔類的成員函數(shù)將經(jīng)過(guò)修改的數(shù)據(jù)傳遞給文檔對(duì)象文檔對(duì)象獲得修改過(guò)的數(shù)據(jù)之后,對(duì)其進(jìn)行必要的修改,最后保存到永久介質(zhì)(如磁盤文件)中6SDI文檔/視圖應(yīng)用程序示意圖 711.1.4 SDI程序的消息傳遞過(guò)程 當(dāng)用戶選擇了菜單項(xiàng),單擊了快捷鍵或工具條按鈕,系統(tǒng)就會(huì)發(fā)送WM_COMMAND消息??蚣艽翱趯?shí)際上是大多數(shù)WM_COMMAND消息的接受者,但WM_COMMAND消息還可以在視圖、文檔,甚至應(yīng)用程序類中被處理。911.2 Do

4、c/View框架的主要成員 Doc/View框架雖然可以調(diào)用成百上千個(gè)不同的類,但是核心類只有五個(gè):CWinAppCDocumentCViewCDocTemplateCFrameWnd 1011.2.1 CWinApp 類 CWinApp類代表主程序,CWinApp本身是不可見的,它負(fù)責(zé)維護(hù)進(jìn)程的啟動(dòng)、終止、消息循環(huán)、命令行參數(shù)、資源管理 成員描述m_pszAppName應(yīng)用程序名M_lpCmdLine命令行參數(shù)M_pMainWnd應(yīng)用程序主窗口指針M_pszExeName可執(zhí)行文件名M_pszProfileName配置INI文件名M_pszRegistrKey配置注冊(cè)表主鍵值LoadCurs

5、or加載光標(biāo)資源LoadIcon加載圖標(biāo)資源部分主要成員1111.2.2 CDocument類 12最常用的是SetModifiedFlag()和UpdateAllViews()。文檔內(nèi)容被修改后,一般要調(diào)用SetModifiedFlag()來(lái)設(shè)定一個(gè)標(biāo)志。UpdateAllView()刷新所有和文檔關(guān)聯(lián)的視圖。實(shí)際上該函數(shù)調(diào)用各個(gè)視圖類的OnUpdate()函數(shù)。這樣做可以保證各個(gè)視圖之間的同步。13 用戶可通過(guò)函數(shù)GetFirstViewPosition()和GetNextView()得到和文檔關(guān)聯(lián)的視圖的指針,代碼如下:POSITION pos = GetFirstViewPositio

6、n(); /得到視圖列表頭的位置While(pos != NULL) CView *pView = GetNextView(pos);/獲得視圖列表中的視圖指針CDocument類在現(xiàn)在流行的MVC(Modal、View、Control)設(shè)計(jì)模式中相當(dāng)于其中的Modal,表示抽象數(shù)據(jù)模型。文檔最主要的功能如下:l 打開保存文檔l 維護(hù)文檔相關(guān)的視圖列表l 維護(hù)文檔修改標(biāo)志l 通過(guò)電子郵件發(fā)送文檔 用戶修改文檔數(shù)據(jù)時(shí),調(diào)用SetModifiedFlag方法來(lái)標(biāo)志數(shù)據(jù)被更改過(guò)。當(dāng)程序關(guān)閉該文檔關(guān)聯(lián)的最后一個(gè)視圖的時(shí)候,文檔會(huì)自動(dòng)提示你保存修改。 14 CArchive對(duì)象是單向的,只用于保存或讀取

7、兩者之一,不能通過(guò)同一個(gè)CArchive對(duì)象既保存又讀取文檔。 在框架創(chuàng)建CArchive對(duì)象時(shí),已根據(jù)用戶選擇的是 “保存” ( “另存為” )還是 “打開” 來(lái)設(shè)置了CArchive對(duì)象的類型,我們可以使用CArchive類的成員函數(shù)IsStoring來(lái)檢索當(dāng)前CArchive對(duì)象的類型,從而得知用戶所期望的操作是保存還是讀取,執(zhí)行不同的操作。 1611.2.3 CView類 視圖類(CView)是從CWnd類下派生的 視圖類具有CWnd的所有功能如:創(chuàng)建、移動(dòng)、顯示和隱藏窗口等。CView類可以接收任何Windows消息,而CDocument類則不行 IsSelected():確定文檔是

8、否被選中OnScroll():當(dāng)用戶滾動(dòng)時(shí),CView的響應(yīng)OnInitialUpdate():在類第一次構(gòu)造后由MFC調(diào)用OnDraw():由MFC調(diào)用發(fā)出文檔到設(shè)備描述表OnUpdate():由MFC調(diào)用對(duì)文檔的修改進(jìn)行響應(yīng)OnPrepareDC():在調(diào)用OnDraw()前允許修改設(shè)備描述表由MFC調(diào)用CView主要虛擬方法 17CEditView:簡(jiǎn)單的文本編輯器,類似NotepadCListView:基于列表的視圖,類似文件夾瀏覽CTreeView:基于樹狀控件的視圖,類似文件瀏覽左側(cè)的樹狀結(jié)構(gòu)CRichEditView:支持多種字體、OLE和RTF格式的高級(jí)編輯器CScrollVi

9、ew:支持滾動(dòng)條的視圖CFormView:窗體視圖,支持在上邊使用對(duì)話框控件CRecordView:連接到ODBC數(shù)據(jù)庫(kù)的視圖CDaoRecordView:連接到DAO數(shù)據(jù)庫(kù)的視圖CView的子類1911.2.4 CDocTemplate類 文檔模板類在應(yīng)用程序中有著非常重要的作用,是它將原本獨(dú)立的文檔、視圖和框架窗口對(duì)象聯(lián)系在一起 文檔模板類負(fù)責(zé)具體的關(guān)聯(lián)文檔、視圖、框架的創(chuàng)建 20 在VC+中,文檔對(duì)象、與文檔對(duì)象相關(guān)聯(lián)的視圖對(duì)象以及為視圖對(duì)象提供顯示的框架窗口都是由文檔模板創(chuàng)建的。 每一種文檔類型都有一種文檔模板與之相對(duì)應(yīng),文檔模板負(fù)責(zé)創(chuàng)建和管理該文檔類型的所有文檔。文檔模板的構(gòu)造函數(shù)的

10、原型如下:CDocTemplate(UINT nIDResource, /與文檔一同使用的各種資源的資源標(biāo)識(shí)符CRuntimeClass* pDocClass,/ 指向文檔派生文檔類的對(duì)象的指針CRuntimeClass* pFrameClass, /框架類的派生框架類的對(duì)象指針CRuntimeClass* pViewClass /指向CView的派生視圖類的對(duì)象指針 ) 在SDI應(yīng)用程序中只有一個(gè)文檔模板對(duì)象,而MDI應(yīng)用程序需要針對(duì)不同類型的文檔定義不同的文檔模板對(duì)象。21當(dāng)前位置被訪問的位置訪問方法文檔視圖GetFirstViewPositionGetNextView文檔模板GetDoc

11、Template視圖文檔GetDocument視圖框架GetParentFrame框架視圖GetActiveView框架文檔GetActiveDocumentMDI主框架MDI子框架MDIGetActiveMDI子框架MDI主框架GetParentFrame任何位置應(yīng)用程序AfxGetApp任何位置主框架AfxGetMainWndDoc/View結(jié)構(gòu)的五個(gè)基本成員經(jīng)常需要互相訪問,假設(shè)某個(gè)視圖想要獲得文檔,或某個(gè)框架需要獲得活動(dòng)視圖,可以通過(guò)此表提供的方法進(jìn)行解決 2211.2.5 CFrameWnd類 CFrameWnd類在Doc/View結(jié)構(gòu)中起著舉足輕重的作用。 框架窗口維護(hù)了很多幕后的

12、工作,例如工具條、菜單、狀態(tài)條的顯示、更新,視圖的位置和顯示,其它可??靠臻g的停靠和動(dòng)態(tài)尺寸調(diào)整。許多默認(rèn)為MFC應(yīng)用程序應(yīng)該具備的基本功能都是CframeWnd類在完成 2311.3文檔操作中的一些重要概念 串行化處理文檔操作文檔的消息映射文檔消息傳遞文件打開文件保存24 使用串行化的好處是不需要重載文件打開、文件保存之類的方法,MFC框架會(huì)自動(dòng)完成這些任務(wù),并自動(dòng)調(diào)用文檔類的Serialize方法來(lái)完成串行化過(guò)程。 如果文檔的抽象數(shù)據(jù)只有一個(gè)字符串,那么你只需要在Serialize中添加相應(yīng)語(yǔ)句就可以完成串行化過(guò)程。 如果不使用MFC提供的串行化框架,那么就需要重載一些函數(shù),來(lái)獲取文件名,

13、然后自己來(lái)讀寫文件完成對(duì)象的串行化。26在進(jìn)行串行化處理時(shí),通常是通過(guò)CArchive(檔案)類來(lái)完成的成員描述WriteString寫入字符串ReadString讀取字符串ReadClass讀取類信息WriteClass寫入類信息Close關(guān)閉檔案GetObjectSchema讀取對(duì)象版本號(hào)SetObjectSchema設(shè)置對(duì)象版本號(hào)M_pDocument使用該檔案的文檔Read讀取字節(jié)內(nèi)容Write寫入字節(jié)內(nèi)容GetFile獲取底層的CFile對(duì)象operator從流中讀取基本類型IsStoring是否處于保存狀態(tài)Flush將緩沖中的數(shù)據(jù)強(qiáng)制寫入流中Abort在不發(fā)送異常的情況下關(guān)閉檔案R

14、eadObject讀取串行化對(duì)象WriteObject寫入串行化對(duì)象CArchive類的常用成員 2711.3.2 消息映射 使用ClassWizard來(lái)添加消息映射,但有時(shí),ClassWizard不支持某些類的消息映射,需自己添加一些自定義的消息,這時(shí)都需要手工添加消息映射代碼 數(shù)組中存儲(chǔ)的信息消息應(yīng)用于的控件ID,或者ID范圍所處理的消息消息所傳遞的參數(shù)消息所期望的返回值 消息映射本質(zhì)上就是一個(gè)數(shù)組,MFC使用該數(shù)組來(lái)確定消息傳遞時(shí)具體要傳遞給哪一個(gè)函數(shù)29 當(dāng)MFC收到消息后,便自動(dòng)確定目標(biāo)窗口和相應(yīng)的MFC類的實(shí)例。然后它便搜索窗口的消息映射尋找匹配的項(xiàng)。若窗口中沒有處理該消息的處理程

15、序,MFC便進(jìn)一步搜索窗口的父類。如果父類也沒有找到處理該消息的函數(shù),MFC便將消息傳遞給該窗口的原窗口過(guò)程 30 在消息映射的時(shí)候,僅僅靠ClassWizard生成的宏是不夠的,有時(shí)需要向已有的消息映射添加自己的宏,但所添加的宏一定要放在ClassWizard的特殊注釋之外。 以下是由AppWizard產(chǎn)生的默認(rèn)MDI視圖的消息映射,另外添加了一個(gè)菜單項(xiàng)的處理和一個(gè)WM_ERASEBKGND消息的映射: BEGIN_MESSAGE_MAP(CMDIView, CView) /AFX_MSG_MAP(CMDIView) ON_COMMAND(ID_OPER_TEST, OnOperTest)

16、ON_UPDATE_COMMAND_UI(ID_OPER_TEST, OnUpdateOperTest) ON_WM_ERASEBKGND() /AFX_MSG_MAP / Standard printing commands ON_COMMAND(ID_FILE_PRINT, CView:OnFilePrint) ON_COMMAND(ID_FILE_PRINT_DIRECT, CView:OnFilePrint) ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView:OnFilePrintPreview)END_MESSAGE_MAP() 位于AFX_MSG_MA

17、P之間的宏來(lái)自ClassWizard特定宏 ON_COMMAND是通用宏31在第二個(gè)AFX_MSG_MAP之后,可以添加自己的消息映射,ClassWizard不檢查這里,這里的消息映射不會(huì)出現(xiàn)在ClassWizard中的 3211.3.3 消息傳遞 由于用戶可以在很多MFC類中映射同一個(gè)消息,如可以在文檔和視圖中同時(shí)映射打開文件的消息,這樣就需要消息有明確的來(lái)源,也有明確的接收者,因此需要判斷消息傳遞的順序。 當(dāng)前視圖當(dāng)前文檔與當(dāng)前視圖/文檔關(guān)聯(lián)的文檔模板子框架窗口(只有MDI有該步驟)主框架窗口應(yīng)用程序?qū)ο?311.4 SDI編程實(shí)例 【例11-1】在主窗口中央顯示一文本“您好, 單文檔界面

18、的例程!”。單擊“改變顯示文本”菜單項(xiàng),可彈出一個(gè)對(duì)話框,通過(guò)此對(duì)話框可改變主窗口中的顯示文本內(nèi)容 34(1) 創(chuàng)建工程文件和對(duì)話框資源 創(chuàng)建一個(gè)單文檔工程文件MySdi,然后添加對(duì)話框資源(2) 為CMySdiDoc類添加成員變量 在CMySdiDoc類的定義中增加如下的代碼: CString m_str;用以存放字符串35(3) 文檔變量初始化打開CMySdiDoc.cpp文件,在 OnNewDocument成員函數(shù)加入以下代碼:BOOL CMySdiDoc:OnNewDocument()if (!CDocument:OnNewDocument()return FALSE;m_str=“您

19、好,單文檔界面的例程!”/初始化成員變量return TRUE;36(4) 視圖的輸出 MySdi程序視圖類CMySdiView類的OnDraw成員函數(shù):void CMySdiView:OnDraw(CDC* pDC) CMySdiDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); CRect rectClient; GetClientRect(rectClient);/ 獲取當(dāng)前客戶區(qū)的指針 CSize sizeClient=rectClient.Size();/ 獲取當(dāng)前客戶區(qū)的大小 CString str=pDoc-m_str;/ 從文件中讀取數(shù)

20、據(jù) CSize sizeTextExtent=pDC-GetTextExtent(str);/ 用新選定的字體繪制字符串 pDC-TextOut(sizeClient.cx-sizeTextExtent.cx)/2,(sizeClient.cy-sizeTextExtent.cy)/2,str);調(diào)用GetDocument()得到文檔類的指針,將文檔對(duì)象成員變量復(fù)制到字符串str中,調(diào)用TextOut()將m_str的內(nèi)容顯示到框架窗口中的視圖中。37(5) 文檔串行化 在 “編輯” 菜單中添加菜單項(xiàng)“改變顯示文本” (ID_EDIT_CHANGETEXT )。單擊此菜單項(xiàng)可以將將對(duì)視圖中顯示

21、文本所做的修改保存到一個(gè)磁盤文件中,具體的實(shí)現(xiàn)方法如下:void CMySdiDoc:OnEditChangetext() CDlgInput inputDlg;/創(chuàng)建一個(gè) CInputDlg類的對(duì)象inputDlg if(inputDlg.DoModal()=IDOK)/顯示對(duì)話框 m_str=inputDlg.m_input;/獲取輸入的字符串UpdateAllViews(NULL);/更新視圖 38為了在CMySdiDoc類中定義對(duì)話框類CDlgInput對(duì)象,還必須在MySdiDoc.cpp文件中加入CDlgInput類的頭文件DlgInput.h,代碼如下:#include DlgI

22、nput.h/加入頭文件 為了把這些修改保存到磁盤文件中,并在需要時(shí)可以打開所保存的磁盤文件讀取文檔,需要重載CExampleDoc類的Serialize函數(shù)來(lái)完成串行化。重載后的Serialize函數(shù)的代碼如下:void CMySdiDoc:Serialize(CArchive& ar)if (ar.IsStoring()arm_str;/讀取文檔內(nèi)容 3911.5 MDI編程實(shí)例 【例16-2】創(chuàng)建多文檔的應(yīng)用程序,可以打開兩種類型的文檔。MyMdi1是系統(tǒng)默認(rèn)生成的文檔(可以打印)。MyMdi21是另一個(gè)用戶添加的文檔類型(不允許打印),在程序的窗口中顯示“您好, 多文檔界面的例程!”,

23、 注意如果活動(dòng)文檔的 類型改變,則菜單的 “編輯”項(xiàng)的子菜單不 同,工具條上的“打印” 按鈕的激活狀態(tài)也不 同40(1) 創(chuàng)建MDI工程文件 創(chuàng)建MyMdi工程文件,在Step 4 of 6 的窗口中,單擊Advanced按鈕,在File extention對(duì)話框中加入mmd,完成后的應(yīng)用程序的文件將使用“.mmd”為擴(kuò)展名,文件過(guò)濾器域顯示為“MyMdi文件(*.mmb)”,在Step 6 of 6 的對(duì)話框中,為CMyMdiView類設(shè)置基類為CEditView。41(2)創(chuàng)建第二種文檔和視圖類View ClassWizard Class Info Add Class New 42(3)

24、創(chuàng)建資源 在Resource.h文件中,手工加入下列代碼:#define IDR_MYMDITYPE2135 這樣就定義了第二類文檔的文檔、視圖和框架窗口共同的資源ID,以后定義的菜單、文檔模板等資源均可以使用此ID文檔模板字符串的格式如下:nIDResource nnnnnnn43對(duì)于第一個(gè)文檔,應(yīng)用程序向?qū)е苯赢a(chǎn)生了一個(gè)文檔模板,現(xiàn)在必須手工加入第二個(gè)資源模板字符串。具體的方法是:打開MyMdi.rc文件,首先找到如下代碼:IDR_MYMDITYPE nMyMdi nMyMdi nMyMdi 文件 (*.mmd) n.mmd nMyMdi.Document nMyMdi Document4

25、4在上面代碼的后面加入:IDR_MYMDITYPE2 nMyMdi2 nMyMdi2 nMyMdi2 文件 (*.mm2) n.mm2 nMyMdi2.Document nMyMdi2 Document類似第一個(gè)資源模板的格式(3) 菜單、對(duì)話框資源 類似第一個(gè)例題45(4) 代碼編輯(a) 創(chuàng)建文檔模板類 本程序支持多種文檔,在應(yīng)用程序的InitInstance()函數(shù)中,需要定義新的文檔模板的對(duì)象,在MyMdi.cpp中輸入代碼如下:BOOL CMyMdiApp:InitInstance() CMultiDocTemplate* pDocTemplate2; pDocTemplate2 =

26、 new CMultiDocTemplate(IDR_MYMDITYPE2,RUNTIME_CLASS(CMyMdiDoc2), / MDI派生文檔類的CRuntimeClass對(duì)象的指針RUNTIME_CLASS(CChildFrame), / MDI派生子框架類的CRuntimeClass對(duì)象的指針RUNTIME_CLASS(CMyMdiView2);/ 創(chuàng)建文檔模板對(duì)象AddDocTemplate(pDocTemplate2);/將新模板添加到應(yīng)用程序的文檔模板列表中46為使CMyMdiDoc2類和CMyMdiView2類在CMyMdiApp類中成為可識(shí)別的類,必須在MyMdiApp.c

27、pp文件中加入CMyMdiDoc2類和CMyMdiView2類的說(shuō)明頭文件MyMdiDoc2.h和MyMdiView2.h/ MyMdiApp.cpp : implementation of the CMyMdiApp class#include MyMdiDoc2.h/加入頭文件#include MyMdiView2.h47(b) 擴(kuò)展CMyMdiDoc2類 添加成員變量:在類CMyMdiDoc2中增加Cstring類型的成員變量m_str文檔變量初始化:為了能夠在的二個(gè)文檔中顯示“您好, 多文檔界面的例程!”,需在CMyMdiDoc2類的OnNewDocument()成員函數(shù)中為變量m_s

28、tr賦初值。因此需添加下列代碼: BOOL CMyMdiDoc2:OnNewDocument()if (!CDocument:OnNewDocument()return FALSE;m_str=您好, 多文檔界面的例程!;return TRUE;48添加菜單處理函數(shù): 在類CMyMdiDoc2中為“編輯”菜單中的菜單項(xiàng) “改變顯示文本” 添加消息處理函數(shù)OnEditChangeText(),加入代碼如下:void CMyMdiDoc2:OnEditChangetext() / TODO: Add your command handler code here CDlgInput inputDlg;/創(chuàng)建一個(gè)CinputDlg類的對(duì)象inputDlg if( inputDlg.DoModal()=IDOK )/顯示inputDlg模式對(duì)話框 m_str = inputDlg.m_input;/獲取輸入的字符串UpdateAllViews(NULL);/更新視圖

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論