多媒體視頻播放器_第1頁
多媒體視頻播放器_第2頁
多媒體視頻播放器_第3頁
多媒體視頻播放器_第4頁
多媒體視頻播放器_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

目錄TOC\o"1-4"\h\z\u1. 根本功能描述 12. 設(shè)計(jì)思路 13. 軟件設(shè)計(jì) 33.1設(shè)計(jì)步驟 33.2界面設(shè)計(jì) 53.2.1圖標(biāo)設(shè)計(jì) 53.2.2對話框設(shè)計(jì) 6 菜單欄設(shè)計(jì) 73.3 關(guān)鍵功能的實(shí)現(xiàn) 73.3.1“翻開〞、“播放〞功能的實(shí)現(xiàn) 83.3.2“暫停/繼續(xù)〞、“停止〞功能的實(shí)現(xiàn) 8 靜音和音量滾動條的實(shí)現(xiàn) 8 播放列表功能的實(shí)現(xiàn) 84. 心得體會 95. 思考題 106. 附錄 106.1調(diào)試過程 106.2測試結(jié)果 116.3關(guān)鍵源代碼 117.參考文獻(xiàn) 16多媒體視頻播放器根本功能描述多媒體視頻播放器作為用來播放視頻和音頻的軟件,是當(dāng)下信息時(shí)代中人們?nèi)粘W(xué)習(xí)、辦公、休閑娛樂都不可或缺的軟件,也是Windows系統(tǒng)中必備的一個(gè)重要軟件。在學(xué)習(xí)了Windows編程應(yīng)用后,我們可以利用VC++6.0的MFC應(yīng)用編程制作屬于自己的多媒體視頻播放器。多媒體視頻播放器要實(shí)現(xiàn)對*.avi、*.mp3、*.wma、*.wmv等多種格式的多媒體文件進(jìn)行播放。同時(shí)包含翻開、播放、暫停、繼續(xù)、停止、快退快進(jìn)、音量控制等根本功能和對播放列表的展開、保存、刪除和清空等操作。其中可以通過按鈕、滾動條和菜單等多種方式來實(shí)現(xiàn)相應(yīng)控制操作。設(shè)計(jì)思路要利用VC++6.0創(chuàng)立多媒體播放器,我們必須先了解MFC編程,MFC是Microsoft公司提供的基于Win32API的C++類庫集,它定義了一個(gè)標(biāo)準(zhǔn)的應(yīng)用程序框架,借助這個(gè)框架,用戶可以輕松地開發(fā)出標(biāo)準(zhǔn)的Windows應(yīng)用程序。創(chuàng)立應(yīng)用程序時(shí),我們需要用到AppWizard、ClassWizard和各種控件。而在本次多媒體視頻播放器的設(shè)計(jì)中,我們需要用到VC++6.0內(nèi)部的ActiveX控件——WindowsMediaPlayer控件。WindowsMediaPlayer簡稱WMP,是一款Windows系統(tǒng)自帶的播放器,支持通過插件增強(qiáng)功能。其控件作為本次課設(shè)的媒體控件可以滿足要求。并且該控件是微軟自帶的免費(fèi)控件,通常Windows系統(tǒng)中都有這個(gè)控件,所以選用這個(gè)控件方便設(shè)計(jì)出來的軟件在各個(gè)電腦運(yùn)行。要創(chuàng)立這個(gè)程序,首先是要建立相應(yīng)的對話框和各種控件〔包括插入WindowsMediaPlayer控件〕以及圖標(biāo)、菜單欄等資源,然后為初始化設(shè)置對話框相應(yīng)的樣式等〔包括修改圖標(biāo)代碼等〕,然后為相關(guān)控件建立相應(yīng)的消息相應(yīng)函數(shù),通過對相應(yīng)類中函數(shù)的調(diào)用實(shí)現(xiàn)相應(yīng)的功能。主要包含播放列表操作模塊和視頻播放模塊,又各自包含相應(yīng)的功能函數(shù)。軟件流程圖如下:開開始初初始化添加文件到列表添加文件到列表播放操作列表操作播放操作列表操作播放播放清空刪除保存展開清空刪除保存展開暫停暫停?音量條靜音停止快進(jìn)快退音量條靜音停止快進(jìn)快退NOYESNOYES繼續(xù)暫停繼續(xù)暫停結(jié)結(jié)束圖1程序整體框架圖軟件設(shè)計(jì)對于本次多媒體播放器,我們采用MFC對話框創(chuàng)立,然后插入WMP控件,借助類向?qū)瓿筛鱾€(gè)功能函數(shù)的編寫。在WMP控件里,與多媒體播放器實(shí)現(xiàn)功能有關(guān)的類有:Cwmpplayer4,Cwmpcontrols,Cwmpmedia,Cwmpplaylist,Cwmpsettings五大類。其中播放器的一些根本的功能如播放、暫停、快進(jìn)、快退等主要是調(diào)用CWMPControl和Cwmpplayer4類實(shí)現(xiàn)的;播放器中播放列表的實(shí)現(xiàn)主要是調(diào)用Cwmpplaylist類;對于音量的調(diào)節(jié)以及靜音是調(diào)用Cwmpsettings和Cwmpplayer4類實(shí)現(xiàn)的。除了以上提到的功能的實(shí)現(xiàn),還有翻開對話框是調(diào)用翻開對話框類,篩選文件是調(diào)用szFileFilter()文件過濾函數(shù),獲取文件名字和路徑是GetFileName()和GetNextPathName()函數(shù),音量滑動條Slinder是通過對CSliderCtrl類實(shí)現(xiàn)的。3.1設(shè)計(jì)步驟首先建立一個(gè)以自己名字命名的MFC工程,并在隨后彈出的MFC應(yīng)用程序向?qū)е羞x擇創(chuàng)立相應(yīng)根本對話框。圖2“新建〞對話框示意圖然后在資源對話框中,先刪去初始化的“確定〞和“取消〞,再單擊鼠標(biāo)右鍵選擇“插入ActiveX控件〞,在跳出的對話框中選擇“WindowsMediaPlayer〞。圖3添加“WindowsMediaPlayer〞控件示意圖隨后在類向?qū)е姓业絎MP控件對應(yīng)的ID號,然后把控件的相關(guān)類都添加進(jìn)來,讓控件與對話框聯(lián)系起來。圖4“WindowsMediaPlayer〞控件類添加示意圖然后再在類向?qū)А癕emberVariables〞中為控件關(guān)聯(lián)相應(yīng)的變量,命名為“m_player〞,類型選擇為“Control〞。圖5“SourceFile〞新增的文件這時(shí)我們已經(jīng)可以看到在“SourceFile〞中新增了17個(gè)類相關(guān)文件,在相應(yīng)頭文件中也增加了17個(gè)頭文件。其中最主要的類為Cwmpplayer4,Cwmpcontrols,Cwmpmedia,Cwmpplaylist,Cwmpsettings五大類。Cwmpplayer4類主要是關(guān)于對其他類的對象的調(diào)用以及根本的控件功能的實(shí)現(xiàn),提供了與WindowsMediaPlayer控件進(jìn)行交互的根本方法,其中局部成員函數(shù)還能夠進(jìn)一步獲取得到其他相關(guān)類對象的實(shí)例;Cwmpcontrols類主要是對控件的更多的操作;Cwmpmedia類主要是對于媒體文件資源的一些操作;Cwmpplaylist類主要是關(guān)于播放列表的操作;Cwmpsettings類主要是對于媒體文件中的一些根本設(shè)置的操作。3.2界面設(shè)計(jì)3.2.1圖標(biāo)設(shè)計(jì)為了界面美觀,圖標(biāo)采用自己下載的播放器圖標(biāo),在“Source〞里插入“Icon〞來引入圖標(biāo),ID為“IDI_ICON1〞。此處需要注意的是圖標(biāo)的格式須為“ico〞格式,然后要在相應(yīng)位置將默認(rèn)的圖標(biāo)ID改為所需的,即在圖標(biāo)相應(yīng)變量定義的地方改ID號:m_hIcon=AfxGetApp()->LoadIcon(IDI_ICON1); //圖標(biāo)3.2.2對話框設(shè)計(jì)在資源界面中編輯對話框,添加各個(gè)控件并根據(jù)自己喜好排布和設(shè)置相應(yīng)ID號,構(gòu)建界面友好美觀的對話框。然后在類向?qū)е袨橄嚓P(guān)控件建立相應(yīng)消息響應(yīng)映射,添加消息響應(yīng)函數(shù)。表1控件ID以及對應(yīng)響應(yīng)函數(shù)表按鈕ID控件Caption消息響應(yīng)函數(shù)IDC_OPEN翻開OnOpen()IDC_PLAY播放OnPlay()IDC_PAUSE暫停/繼續(xù)OnPause()IDC_STOP停止OnStop()IDC_FORWARD快進(jìn)OnForward()IDC_BACKWARD快退OnBackward()IDC_MUTE靜音/音量OnMute()IDC_EXIT退出OnExit()IDC_LIST播放列表OnList()IDC_SAVE保存列表OnSave()IDC_DELETE刪除視頻OnDelete()IDC_CLEAR清空列表OnClear()然后是參加一些關(guān)聯(lián)變量的控件,之前參加了WMPlayer,還要參加“CSliderCtrl〞類型的滑塊“Slider〞來當(dāng)調(diào)節(jié)聲音,參加“CListBox〞類型列表框“ListControl〞充當(dāng)播放列表。表2控件ID以及關(guān)聯(lián)變量表按鈕ID控件Caption變量名稱類型IDC_OCX1WMPlayerm_playerCWMPlayer4IDC_SLIDER2Sliderm_volumeCSliderCtrlIDC_LIST1ListControlm_listCListBox對話框的最后樣式為:圖6對話框的樣式菜單欄設(shè)計(jì)在已經(jīng)構(gòu)建好對話框,完成控件的關(guān)聯(lián)和相應(yīng)消息響應(yīng)函數(shù)的添加后,菜單欄的添加就相對簡單多了,只需要將相應(yīng)菜單項(xiàng)選擇項(xiàng)的ID號與上述表中ID保持一致就能直接用菜單項(xiàng)選擇項(xiàng)調(diào)用相應(yīng)消息響應(yīng)函數(shù)了。圖7菜單欄的創(chuàng)立關(guān)鍵功能的實(shí)現(xiàn)關(guān)鍵功能的實(shí)現(xiàn)主要都是在相關(guān)控件的相應(yīng)消息相應(yīng)函數(shù)中添加相應(yīng)的代碼,從而實(shí)現(xiàn)所需要的功能。下面將討論關(guān)鍵的功能函數(shù),相應(yīng)代碼在附錄中給出。3.3.1“翻開〞、“播放〞功能的實(shí)現(xiàn)“翻開〞按鈕主要是實(shí)現(xiàn)了對翻開的文件進(jìn)行過濾,主要使用了szFileFilter()函數(shù)。定義了能翻開的文件格式等。點(diǎn)擊確定時(shí),首先是獲取文件路徑,然后把文件路徑傳給播放列表中,列表在從文件路徑中提取文件名來顯示。而“播放〞按鈕能夠從列表中獲取文件路徑,然后把文件路徑通過SetUrl()交給控件讀取播放。同時(shí)定義了初始的音量大小。3.3.2“暫停/繼續(xù)〞、“停止〞功能的實(shí)現(xiàn)“暫停/繼續(xù)〞按鈕是通過GetDlgItemText()函數(shù)獲取按鈕上的字符來判斷是當(dāng)按鈕按下時(shí)是執(zhí)行暫停還是繼續(xù)播放,并通過SetDlgItemText()函數(shù)來改變按鈕上的顯示字符。其中暫停和繼續(xù)播放這里是利用Cwmpcontrols類中的GetControls().pause()和GetControls().play()這兩個(gè)函數(shù)來實(shí)現(xiàn)的。當(dāng)按下暫停時(shí)視頻停止播放,同時(shí)按鈕顯示“繼續(xù)〞,點(diǎn)擊“繼續(xù)〞,那么繼續(xù)播放視頻并顯示“暫停〞。而“停止〞功能在這里那么是直接利用了控件類中的close()函數(shù)來實(shí)現(xiàn)停止的。值得一提的是程序中的快進(jìn)快退功能也是利用了Cwmpcontrols類中的fastForward()和fastReverse()函數(shù)來實(shí)現(xiàn)的。靜音和音量滾動條的實(shí)現(xiàn)靜音功能的實(shí)現(xiàn)與“暫停/繼續(xù)〞功能類似,都是利用GetDlgItemText()和SetDlgItemText()函數(shù)來獲取和改變按鈕上的顯示字符。所不同的是,靜音功能的實(shí)現(xiàn)是調(diào)用了“CWMPSettings.cpp〞文件里的SetVolume()函數(shù)。初始時(shí)按鈕顯示“音量〞,按下后靜音,音量滾動條也回到最低位置,按鈕顯示“靜音〞,再次按下音量恢復(fù),顯示“音量〞。音量滾動條相比于前面幾個(gè)功能的實(shí)現(xiàn),要顯得復(fù)雜很多,區(qū)別于其他命令按鈕的,它是滑塊,需要關(guān)聯(lián)變量“m_volume〞,在“OnInitDialog()〞函數(shù)中已對滑塊范圍進(jìn)行初始化——m_volume.SetRange(0,100);使音量變化范圍為0~100,再調(diào)用嵌套函數(shù)m_player.GetSettings().SetVolume(m_volume.GetPos());來獲取滑塊位置并設(shè)置相應(yīng)音量。播放列表功能的實(shí)現(xiàn)播放列表主要有“隱藏/展開〞、“保存列表〞、“刪除選中視頻〞、“清空列表〞這四個(gè)功能。這個(gè)列表的四個(gè)功能實(shí)現(xiàn)前提是在工程的文件夾里新建一個(gè)txt文檔并命名為“l(fā)ist.txt〞。文檔可以保存播放文件列表使在下次翻開時(shí)可自動的生成播放列表。展開列表和隱藏列表是通過SetWindowPos()函數(shù)對對話框的大小進(jìn)行設(shè)置,讓最右邊的列表可以顯示出來和被隱藏。保存列表是利用CFile類中的相應(yīng)函數(shù)來創(chuàng)立文本:file.Open(".\\list.txt",CFile::modeCreate|CFile::modeReadWrite|CFile::typeText);//創(chuàng)立文本再利用函數(shù)GetText()和WriteString()這兩個(gè)函數(shù)把列表中的內(nèi)容寫入文檔中去。刪除選中的視頻那么是通過如下代碼來實(shí)現(xiàn)的:m_list.DeleteString(m_list.GetCurSel());//刪除當(dāng)前光標(biāo)所選擇的行清空列表直接利用Cwmpplaylist類中的ResetContent()函數(shù)來實(shí)現(xiàn)的。心得體會本次課程設(shè)計(jì)安排在學(xué)期末,比擬深入地考察了我們對MFC的運(yùn)用及掌握。與讓我們更進(jìn)一步地了解到了Windows編程的實(shí)際應(yīng)用,在開拓我們眼界的同時(shí)穩(wěn)固了我們課上所學(xué)知識,也進(jìn)一步鍛煉了我們的自學(xué)能力和對Windows編程的實(shí)際運(yùn)用能力。在開始了解到可視化編程的時(shí)候,我就特別地感興趣,因?yàn)檫@較于之前所學(xué)的普通C和C++編程來得更為實(shí)際,給人一種實(shí)際感,讓我覺得學(xué)的東西能用得上,而且感覺也很有高端的感覺。可視化編程能極大地調(diào)動我的學(xué)習(xí)積極性,所以在Windows編程的學(xué)習(xí)中投入了更多的精力和時(shí)間,也對編程語言的學(xué)習(xí)有了前所未有的興趣和好奇。很遺憾的是在本次卷面考試中沒有相關(guān)的大題來檢驗(yàn)我們的所學(xué)成果,慶幸的是學(xué)校安排了更為直接,更為適宜課程設(shè)計(jì)的方法來考察我們的學(xué)習(xí)情況,對于編程語言這種課程來書,這種考查方式無疑是最正確的,實(shí)際的東西就要實(shí)踐中去檢驗(yàn)。本次課設(shè)我選擇了最貼近我們生活所用的多媒體視頻播放器的設(shè)計(jì),這個(gè)課題使我產(chǎn)生了濃厚的興趣,并開始很早就著手準(zhǔn)備,可惜的是,開始遇到了一個(gè)難題,之后由于各種考試實(shí)驗(yàn)等耽誤,所以被擱淺了,在最后幾天才重新開始做,不過在真正自己編寫的時(shí)候又遇到了各種問題,其中最嚴(yán)重的是在我自己和室友的電腦上,編譯連接成功后,只要一運(yùn)行就會崩潰,開始一直以為是軟件編寫過程中出了過失,花費(fèi)了大量時(shí)間來調(diào)試和排錯(cuò),但是并沒有起到什么作用。后來意識到可能是軟件和系統(tǒng)兼容性的問題,換到其他人的電腦上可以完美運(yùn)行,不過由于之前消耗了大量時(shí)間,所以后面不得不放棄了開始原有的一些設(shè)計(jì)思路??傊?,通過本次課程設(shè)計(jì),自己學(xué)到了很多東西,不僅在對MFC應(yīng)用程序的框架理解和相應(yīng)創(chuàng)立上有了進(jìn)一步提升,對自己的缺乏之處有了認(rèn)識,也對程序的調(diào)試和檢查有了更深入的掌握,也體會到了與他人溝通交流的重要性,更進(jìn)一步加深了我對Windows編程的濃厚興趣。很感謝學(xué)校和老師能提供這次的鍛煉時(shí)機(jī),讓自己在即將結(jié)束的年尾有了更多的收獲,對于新的一年有了更多的思考與展望。思考題控件自帶的類和本程序中的類是如何共同作用的?答:控件自帶的類不能直接調(diào)用,是通過在頭文件中定義相應(yīng)類的對象,然后通過對象名來調(diào)用相應(yīng)函數(shù),而本程序?qū)υ捒虻念愂峭ㄟ^給控件添加消息響應(yīng)函數(shù)。一般控件類有關(guān)的函數(shù)都是在對話框自身的函數(shù)和控件的消息響應(yīng)函數(shù)中調(diào)用。以此實(shí)現(xiàn)控件自帶類和本程序中的類的共同作用。說明程序中調(diào)用的控件函數(shù)的作用?答:各個(gè)控件的消息響應(yīng)函數(shù)如下表所示:表3控件響應(yīng)函數(shù)及其功能功能控件函數(shù)功能控件函數(shù)退出OnExit()音量條OnCustomdrawSlider2()翻開OnOpen()播放OnPlay()停止OnStop()暫停/繼續(xù)OnPause()播放列表OnList()快進(jìn)OnForward刪除視頻OnDelete()快退OnBackward()保存列表OnSave()靜音/音量OnMute()清空列表OnClear()附錄6.1調(diào)試過程1.有一些頭文件沒有添加,導(dǎo)致在ZJ_KESHE_WMPDlg.cpp中構(gòu)建函數(shù)時(shí),很多控件函數(shù)不能被識別,導(dǎo)致出現(xiàn)了很多錯(cuò)誤。2.開始編寫到一般后,程序一運(yùn)行就停止工作,后來不斷進(jìn)行單步調(diào)試,仍然解決不了問題,最后發(fā)現(xiàn)是本人電腦上的軟件的問題,換到其他人電腦上根本可以完美運(yùn)行。3.開始音量條關(guān)聯(lián)的變量沒有初始化范圍,然后起不到作用,后來添加了語句“m_volume.SetRange(0,100);〞。4.在設(shè)置時(shí)候直接刪除了原來的默認(rèn)圖標(biāo),然后在代碼中將其ID號直接改為所設(shè)置的圖標(biāo),后來編譯有問題,逐步在代碼中查找后發(fā)現(xiàn)還需要將有一處對話框創(chuàng)立里包含的刪去。6.2測試結(jié)果經(jīng)過調(diào)試,程序能夠正確運(yùn)行,可以翻開*.avi,*.mp3,*.wma,*.wmv,*.mov格式的文件,能夠?qū)崿F(xiàn)播放,暫停,停止,快進(jìn),快退,音量控制,播放列表控制等多種功能,其中大局部還可以在菜單項(xiàng)選擇項(xiàng)中執(zhí)行。整體運(yùn)行結(jié)果如下列圖所示:圖8運(yùn)行結(jié)果圖6.3關(guān)鍵源代碼BOOLCZJ_KESHE_WMPDlg::OnInitDialog()中新參加了如下代碼:{ flag=1; n=0;m_volume.SetRange(0,100);SetWindowPos(NULL,0,0,580,460,SWP_NOMOVE);//無相對移動m_list.SetHorizontalExtent(1000);CStdioFile*fsp=newCStdioFile(".\\list.txt",CFile::modeRead);//記住列表CStringstr; while(fsp->ReadString(str)) {m_list.AddString(str); }fsp->Close(); deletefsp;}//展開和隱藏列表voidCZJ_KESHE_WMPDlg::OnList()//展開列表{ flag=!flag; if(flag==1)SetWindowPos(NULL,0,0,580,460,SWP_NOMOVE); elseSetWindowPos(NULL,0,0,795,460,SWP_NOMOVE);}//翻開voidCZJ_KESHE_WMPDlg::OnOpen(){CharszFileFilter[]="媒體文件(*.avi,*.mp3,*.wma,*.wmv,*.mov)|*.avi;*.mp3;*.wma;*.wmv;*.mov|";CFileDialogdlg(true,NULL,NULL,OFN_HIDEREADONLY|OFN_ALLOWMULTISELECT|OFN_NOCHANGEDIR,szFileFilter); POSITIONpos=dlg.GetStartPosition(); if(dlg.DoModal()==IDOK) //點(diǎn)擊確定添加文件 { while(pos!=NULL) {m_PathName=dlg.GetNextPathName(pos);//獲取文件路徑m_list.AddString(m_PathName); //向列表添加文件路徑 } }}//退出voidCZJ_KESHE_WMPDlg::OnExit(){OnOK();}//播放列表中雙擊播放選中文件voidCZJ_KESHE_WMPDlg::OnDblclkList1(){CStringstr;intindex=m_list.GetCurSel();m_list.GetText(index,str);m_player.SetUrl(str);m_PathName=str;}//保存列表voidCZJ_KESHE_WMPDlg::OnSave(){ file.Open(".\\list.txt",CFile::modeCreate|CFile::modeReadWrite|CFile::typeText);//創(chuàng)立文本 for(inti=0;i<m_list.GetCount();i++) {CStringstrtemp;m_list.GetText(i,strtemp); //獲得文本中的內(nèi)容strtemp+="\n"; //需要換行file.WriteString(strtemp); //將獲得內(nèi)容寫入列表 }file.Close();}voidCZJ_KESHE_WMPDlg::OnDelete()//從列表中刪除選中視頻{m_list.DeleteString(m_list.GetCurSel());//刪除當(dāng)前光標(biāo)所選擇的行OnSave(); //自動保存刪除某一行后的播放列表}//刪除列表voidCZJ_KESHE_WMPDlg::OnClear(){m_list.ResetContent();file.Open(".\\list.txt",CFile::modeCreate);}voidCZJ_KESHE_WMPDlg::OnPlay()//播放{m_player.SetUrl(m_PathName); //讀取路徑開始播放m_player.GetSettings().SetVolume(50);//初始音量}//暫?;蚶^續(xù)voidCZJ_KESHE_WMPDlg::OnPause(){CStringstrtemp;GetDlgItemText(IDC_PAUSE,strtemp);//獲取按鈕上的字符 if(strtemp.Compare("暫停")==0)//假設(shè)顯示“暫停〞,點(diǎn)擊暫停,并顯示“繼續(xù)〞 {m_player.GetControls().pause();SetDlgItemText(IDC_PAUSE,"繼續(xù)"); } if(strtemp.Compare("繼續(xù)")==0)//實(shí)現(xiàn)從暫停點(diǎn)繼續(xù)播放,并顯示“暫停〞 {m_player.GetControls().play();Se

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論