XXXX年哈工大計(jì)算機(jī)系暑期實(shí)踐項(xiàng)目-UCE_第1頁(yè)
XXXX年哈工大計(jì)算機(jī)系暑期實(shí)踐項(xiàng)目-UCE_第2頁(yè)
XXXX年哈工大計(jì)算機(jī)系暑期實(shí)踐項(xiàng)目-UCE_第3頁(yè)
XXXX年哈工大計(jì)算機(jī)系暑期實(shí)踐項(xiàng)目-UCE_第4頁(yè)
XXXX年哈工大計(jì)算機(jī)系暑期實(shí)踐項(xiàng)目-UCE_第5頁(yè)
已閱讀5頁(yè),還剩30頁(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、.PAGE 1:.;PAGE 35Ultimate Chinese Editor文檔Documents of UCE 1.0哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系Last modified on 2002-9-12目錄 Contents TOC o 1-3 h z u HYPERLINK l _Toc19512190 關(guān)于本軟件 PAGEREF _Toc19512190 h 3 HYPERLINK l _Toc19512191 軟件描畫(huà) PAGEREF _Toc19512191 h 3 HYPERLINK l _Toc19512192 背景 PAGEREF _Toc19512192 h 3 HYPERLINK

2、 l _Toc19512193 軟件的主要特征 PAGEREF _Toc19512193 h 4 HYPERLINK l _Toc19512194 參與人員本軟件 PAGEREF _Toc19512194 h 4 HYPERLINK l _Toc19512195 功能模塊 PAGEREF _Toc19512195 h 4 HYPERLINK l _Toc19512196 內(nèi)核模塊 PAGEREF _Toc19512196 h 4 HYPERLINK l _Toc19512197 鍵盤(pán)控制模塊 PAGEREF _Toc19512197 h 6 HYPERLINK l _Toc19512198 漢

3、字輸入法模塊 PAGEREF _Toc19512198 h 7 HYPERLINK l _Toc19512199 Undo模塊 PAGEREF _Toc19512199 h 8 HYPERLINK l _Toc19512200 MessageBox對(duì)話框模塊 PAGEREF _Toc19512200 h 8 HYPERLINK l _Toc19512201 顯示輸出模塊 PAGEREF _Toc19512201 h 9 HYPERLINK l _Toc19512202 文件列表 PAGEREF _Toc19512202 h 9 HYPERLINK l _Toc19512203 功能模塊函數(shù)列表

4、 PAGEREF _Toc19512203 h 10 HYPERLINK l _Toc19512204 LIST.C PAGEREF _Toc19512204 h 10 HYPERLINK l _Toc19512205 EDITOR.C PAGEREF _Toc19512205 h 11 HYPERLINK l _Toc19512206 BITMAP.H PAGEREF _Toc19512206 h 12 HYPERLINK l _Toc19512207 I. How come. PAGEREF _Toc19512207 h 12 HYPERLINK l _Toc19512208 II. Cr

5、ack it. PAGEREF _Toc19512208 h 12 HYPERLINK l _Toc19512209 III. First Use the Power . PAGEREF _Toc19512209 h 15 HYPERLINK l _Toc19512210 IV. Future Improvement . PAGEREF _Toc19512210 h 16 HYPERLINK l _Toc19512211 WINFUNC.H PAGEREF _Toc19512211 h 16 HYPERLINK l _Toc19512212 I. Design Purpose . PAGERE

6、F _Toc19512212 h 16 HYPERLINK l _Toc19512213 II. The Data Structure . PAGEREF _Toc19512213 h 17 HYPERLINK l _Toc19512214 II. The Functions . PAGEREF _Toc19512214 h 19 HYPERLINK l _Toc19512215 III. Apply The Header . PAGEREF _Toc19512215 h 21 HYPERLINK l _Toc19512216 GOUTPUT.H PAGEREF _Toc19512216 h

7、22 HYPERLINK l _Toc19512217 IMD.H PAGEREF _Toc19512217 h 24 HYPERLINK l _Toc19512218 功能函數(shù)的算法闡明(部分) PAGEREF _Toc19512218 h 25 HYPERLINK l _Toc19512219 AppendChar()在末尾追加一個(gè)字符 PAGEREF _Toc19512219 h 25 HYPERLINK l _Toc19512220 void interrupt far CursorHandler()顯示光標(biāo)的時(shí)間中段句柄的函數(shù) PAGEREF _Toc19512220 h 25 HY

8、PERLINK l _Toc19512221 void ScrollWindowUp(unsigned int n)從第n行后顯示區(qū)域下滾 PAGEREF _Toc19512221 h 26 HYPERLINK l _Toc19512222 void GetHZ(char incode,char bytes)獲取漢字字模 PAGEREF _Toc19512222 h 28 HYPERLINK l _Toc19512223 void PutASCColor(.) 在特定位置用特定顏色顯示ASCII字符 PAGEREF _Toc19512223 h 28 HYPERLINK l _Toc19512

9、224 void PutCNColor(.); 在特定位置用特定顏色顯示漢字字符 PAGEREF _Toc19512224 h 28 HYPERLINK l _Toc19512225 問(wèn)題處理及存在的問(wèn)題 PAGEREF _Toc19512225 h 30 HYPERLINK l _Toc19512226 個(gè)人感受 PAGEREF _Toc19512226 h 30 HYPERLINK l _Toc19512227 虛空中的固執(zhí) PAGEREF _Toc19512227 h 30 HYPERLINK l _Toc19512228 感受團(tuán)隊(duì)(Enjoy Teamwork) PAGEREF _To

10、c19512228 h 31 HYPERLINK l _Toc19512229 閱歷及教訓(xùn) PAGEREF _Toc19512229 h 32 HYPERLINK l _Toc19512230 致謝 PAGEREF _Toc19512230 h 32 HYPERLINK l _Toc19512231 附錄 PAGEREF _Toc19512231 h 32 HYPERLINK l _Toc19512232 西文方式下掛接UCDOS 5.0中的萬(wàn)能漢字輸入法 PAGEREF _Toc19512232 h 32關(guān)于本軟件軟件描畫(huà)軟件中文稱號(hào):中文編輯器軟件英文稱號(hào):Ultimate Chinese

11、 Editor運(yùn)轉(zhuǎn)環(huán)境:DOS環(huán)境編寫(xiě)言語(yǔ):C編譯環(huán)境:Turbo C+V1.0版本:Version 1.0背景本軟件是哈爾濱工業(yè)大學(xué)計(jì)算機(jī)系2001級(jí)本科生的年級(jí)作業(yè)作品。2001年7月,和為等計(jì)算機(jī)系2001級(jí)7名本科生在關(guān)毅教師的指點(diǎn)下組成開(kāi)發(fā)小組,利用假期時(shí)間完成兩個(gè)標(biāo)題:通訊錄和編輯器.本軟件即是編輯器小組的作品。此次活動(dòng)的目的是,經(jīng)過(guò)年級(jí)大作業(yè)方式的活動(dòng)來(lái)培育相互協(xié)作、相互配合的團(tuán)隊(duì)精神,經(jīng)過(guò)活動(dòng)中的實(shí)踐練習(xí)來(lái)加深已學(xué)知識(shí)的了解,同時(shí)又添加了學(xué)習(xí)新知識(shí)的樂(lè)趣(假設(shè)加學(xué)分就更好了)。關(guān)教師思索到2001級(jí)本科生所學(xué)的專業(yè)課有限,高級(jí)言語(yǔ)課程僅涉及C言語(yǔ),要求軟件的一切代碼用C編寫(xiě)。這

12、個(gè)編輯器的一切代碼可在TurboC+v1.0中編譯經(jīng)過(guò)。Turbo C+V1.0是Borland公司的產(chǎn)品,編輯環(huán)境比TurboC2.0有較大的改善,而且對(duì)C支持的非常好,故此成為我們的首選。而且我們還用工程管理,使各自的模塊相對(duì)獨(dú)立,方便管理。軟件的主要特征Ultimate Chinese Editor V1.0具有以下幾方面特征:較強(qiáng)的處置中文的才干,對(duì)中文整體識(shí)別,您不會(huì)看到“半個(gè)漢字引起的屏幕混亂??梢悦撾x漢字系統(tǒng),有獨(dú)立的輸入法,讓您在沒(méi)有漢字系統(tǒng)的情況下可以自在錄入、編輯文本。支持塊操作。有比較友好的界面,有提示對(duì)話框,協(xié)助 您更好的編輯。提供源代碼,期望與您交流。貽笑大方了有詳細(xì)

13、的文檔值得一看哦不是吹牛吧參與人員本軟件楊碧輝 0103111班 擔(dān)任顯示模塊部分frozenwind21cn陳奐章 0103112班 擔(dān)任菜單和界面部分hanzac163高立琦 0103113班 擔(dān)任數(shù)據(jù)操作、管理模塊部分 HYPERLINK mailto:gao_lqhotmail gao_lqhotmail功能模塊內(nèi)核模塊內(nèi)核是對(duì)數(shù)據(jù)處置的中心程序。著名的計(jì)算機(jī)科學(xué)家沃斯(N.Wirth)提出了“數(shù)據(jù)構(gòu)造+算法設(shè)計(jì)=程序。確定了適宜的數(shù)據(jù)構(gòu)造,設(shè)計(jì)出精巧的算法,我們的程序的功能的實(shí)現(xiàn)才干變?yōu)槟軌?。我們首先分析了一下編輯器的?shù)據(jù)構(gòu)造特點(diǎn):不定性。編輯器的行列是不定的,即我們不能預(yù)先知道要處

14、置多大的文本。不規(guī)那么性。每一行的數(shù)據(jù)量不定,不能用一個(gè)固定、通用的數(shù)組來(lái)存放。非延續(xù)性。編輯器需求頻繁的插入、刪除操作,假設(shè)用固定、延續(xù)的空間存放,勢(shì)必降低運(yùn)算的效率。這些特點(diǎn)是我們排除了數(shù)組、隊(duì)列等數(shù)據(jù)構(gòu)造類型,我們的目光鎖定在鏈表上。鏈表具有可以動(dòng)態(tài)添加、刪除節(jié)點(diǎn),不需求延續(xù)的內(nèi)存區(qū)域等特點(diǎn),適用于編輯器的數(shù)據(jù)要求。我們?cè)O(shè)計(jì)以每個(gè)字符為單位的根本構(gòu)造。為了方便處置中文,我們將一個(gè)漢字看作一個(gè)中文自符。字符單元的構(gòu)造如下:struct CHAR_NOTEchar c, c1;CHAR_NOTE *pNext, *pPre;假設(shè)干個(gè)字符節(jié)點(diǎn)連在一同便構(gòu)成了一行。行鏈表表示圖我們又設(shè)計(jì)了一個(gè)行

15、的構(gòu)造體:struct LINE_NOTEint Len;int MaxCaretx;CHAR_NOTE *pHead,*pEnd;LINE_NOTE*pNext, *pPre;int Bx1, Bx2;用來(lái)管理一行的鏈表。如pHead用來(lái)記錄鏈表表頭的指針,pEnd用來(lái)記錄鏈表最末一個(gè)字符的指針。編輯器的中心義務(wù)就是維護(hù)這樣的一個(gè)復(fù)雜的“雙鏈表。文件LIST.C中提供許多函數(shù),如InsertAfter(), AppendChar(), SeekChar()等函數(shù)來(lái)維護(hù)雙鏈表。函數(shù)的功能在模塊功能中有詳細(xì)引見(jiàn)。鍵盤(pán)控制模塊鍵盤(pán)控制模塊表示圖主干程序采用while循環(huán),如代碼:while(1)d

16、ok=GetInputWord(s); /*取當(dāng)前輸入法模塊前往的字串*/ while(k=0 & *s=0);if(k=0) /*字串有效*/p=s;while(*p) AddChar(*p+);else /*為不可顯示按鍵*/key.i=k;if(key.c0 != 0)flag=1;switch(key.i)/*控制鍵*/case C_Y:case C_Z:case C_S:if(flag)switch(key.c0)case ENTER :case BACKSPACE:KeyBackspace();break;case ESC:default:AddChar(key.c0);break

17、;elseswitch(key.c1)/*功能鍵*/case UP:case DOWN:.每一按鍵對(duì)應(yīng)一個(gè)處置模塊,各個(gè)處置模塊調(diào)用LIST.C中的模塊并協(xié)調(diào)顯示的數(shù)據(jù)和內(nèi)存中的數(shù)據(jù)的一致性。比如,KeyUp(), KeyDown() 為控制光標(biāo)鍵的處置模塊,改動(dòng)內(nèi)存當(dāng)前字符的指針并改動(dòng)屏幕上當(dāng)前光標(biāo)的位置。 HYPERLINK l _top 漢字輸入法模塊由于我們的編輯器獨(dú)立于漢字系統(tǒng),且又要處置中文,故而我們必需提供中文輸入法模塊以供用戶來(lái)輸入中文。漢字的輸入是經(jīng)過(guò)bioskey()獲得鍵盤(pán)的掃描碼,根據(jù)鍵盤(pán)的掃描碼算出漢字的輸入碼,最后根據(jù)輸入碼從字庫(kù)中查找一樣的輸入碼,獲得漢字的內(nèi)碼來(lái)

18、實(shí)現(xiàn)的。我們采用UCDOS5.0中的IMD輸入法碼表文件,該碼表文件有幾個(gè)優(yōu)點(diǎn):UCDOS中廣泛支持,提供眾多碼表文件碼表文件構(gòu)造明晰輸入法算法通用,可以掛接多種輸入法。關(guān)于輸入法碼表文件的構(gòu)造,輸入法算法,請(qǐng)?jiān)斠?jiàn)附錄。這部分資料我們?nèi)∽跃W(wǎng)絡(luò)。Undo模塊該模塊提供簡(jiǎn)單的Undo功能,能恢復(fù)被刪除的200個(gè)字符,并將恢復(fù)的字符插入當(dāng)前位置。Undo模塊采用循環(huán)隊(duì)列的數(shù)據(jù)構(gòu)造來(lái)管被刪除節(jié)點(diǎn)的信息。普通的,隊(duì)列遵照先進(jìn)先出的原那么FIFO: First In First Out。普通的隊(duì)列在一個(gè)元素出列時(shí),期它的元素都要向前挪動(dòng)一個(gè)位置。在內(nèi)存中表現(xiàn)為一切單元的元素向前挪動(dòng)一個(gè)位置。這樣勢(shì)必會(huì)添加

19、操作時(shí)間。我們采用循環(huán)隊(duì)列,由于循環(huán)隊(duì)列采用兩個(gè)指針:Head 和 Tail,分別指向隊(duì)列的第一個(gè)和最后一個(gè)元素。經(jīng)過(guò)修正兩個(gè)指針實(shí)現(xiàn)“先進(jìn)先出,節(jié)省了操作時(shí)間。添加一個(gè)元素時(shí),Tail=Tail mod maxsize + 1;刪除一個(gè)元素時(shí),Head=Head mod maxsize + 1。當(dāng)Head與Tail 相等時(shí),表示該隊(duì)列為空;當(dāng) Head=(Tail mod maxsize) + 1 時(shí),隊(duì)列為滿。環(huán)形隊(duì)列表示圖MessageBox對(duì)話框模塊在編輯器中,我們添加了對(duì)話框模塊,如下圖:對(duì)話框模塊存放在MESSBOX.H和MESSBOX.C文件中。主要調(diào)用函數(shù)聲明如下:int Me

20、ssageBox(char *messtr, char *title, MESSAGETYPE choice);參數(shù)闡明:char *messstr 為信息字符串,不能為空char *title為標(biāo)題字符串,可以為空或 NULLMESSTYPEINFO choice為按鈕類型選擇參數(shù)。共有以下幾種選擇:Q_YESNO=1Q_YESQ_YESNOCANCELIN_YESNOIN_YESIN_YESNOCANCELIN_OKIM_YESNOIM_YESIM_YESNOCANCEL E_YESNOE_YESE_YESNOCANCELE_OKINPUT其中,Q_xxx 為疑問(wèn)對(duì)話框(Questioni

21、ng),IN_xxx 為信息對(duì)話框(Information),IM_xxx 為重要信息對(duì)話框(Important information),E_xxx 為錯(cuò)誤對(duì)話框(Error),特別地,INPUT 為輸入對(duì)話框的入口參數(shù)。前往值闡明:假設(shè)選擇左邊第一的按鈕,前往1;左邊第二個(gè)按鈕,前往2;以此類推。 HYPERLINK l _top 顯示輸出模塊顯示輸出模塊主要采用直接寫(xiě)視屏內(nèi)存的方法來(lái)實(shí)現(xiàn)。經(jīng)過(guò)視屏的端口0 x3ce,0 x3cf,0 x3c4,0 x3c5和視屏的內(nèi)存地址0 xa0000000的直接操作來(lái)組成視屏顯示的一系列函數(shù)。雖然經(jīng)過(guò)直接寫(xiě)視屏的方式來(lái)實(shí)現(xiàn)的函數(shù)有一些移植性問(wèn)題,但是

22、大大提高了顯示的速度,在魚(yú)和熊掌不可兼得的情況下只好采取這樣的措施。文件列表LIST.C內(nèi)核數(shù)據(jù)操作函數(shù)庫(kù)CURSOR.C光標(biāo)操作函數(shù)庫(kù)EDITOR.C鍵盤(pán)操作IMD.C輸入法操作函數(shù)庫(kù)MAIN.C主過(guò)程O(píng)PENDLG.C“翻開(kāi)對(duì)話框的程序文件UNDO.CUndo的程序文件GOUTPUT.H漢字顯示的函數(shù)文件WINFUNC.H窗口繪制的函數(shù)文件FACE.C界面的程序文件HZK16漢字庫(kù)文件XMS_OBJ.OBJWB.IMD五筆輸入法文件PY.IMD拼音輸入法文件功能模塊函數(shù)列表LIST.C該文件中提供如下的功能函數(shù)列表函數(shù)稱號(hào)參數(shù)聲明功能引見(jiàn)InitDocument()初始化文檔void In

23、itLinenote()LINE_NOTE *lnvoid InitDocument()void AppendLine()void AppendChar()char c, char c1int AppendString()const char *s, int option添加一個(gè)字符串option 為1,在末尾添加option 為0,在當(dāng)前位置添加void ReleaseAll()釋放一切節(jié)點(diǎn)int NextLine()當(dāng)前行指針下移int PreLine()當(dāng)前行指針上移int GetLineLength()獲得當(dāng)前行的長(zhǎng)度int GetLines()獲得總行數(shù)int SeekLine(in

24、t LineNo)按行號(hào)挪動(dòng)指針int SeekLineTail()挪動(dòng)到最末行int SeekLineHead()挪動(dòng)到首行int SeekHead()挪動(dòng)到當(dāng)前行的開(kāi)場(chǎng)int SeekTail()挪動(dòng)到當(dāng)前行的最末節(jié)點(diǎn)int NextChar()下一個(gè)字符int PreChar()前一個(gè)字符int SeekChar(int x)按標(biāo)號(hào)挪動(dòng)指針int IsEmptyLine()測(cè)試該行能否為空void InsertAfter()char c, char c1后插一個(gè)節(jié)點(diǎn)void InsertBefore()char c, char c1前插一個(gè)節(jié)點(diǎn)void DeleteBefore()刪除前

25、一個(gè)節(jié)點(diǎn)void DeleteChar()刪除當(dāng)前節(jié)點(diǎn)void DeleteHead()刪除一行最先的一個(gè)節(jié)點(diǎn)void DeleteTail()刪除一行最后的一個(gè)節(jié)點(diǎn)void DisplayLine()顯示一行int Free(CHAR_NOTE *p)釋放節(jié)點(diǎn)空間int WriteTxt()char *filename寫(xiě)入文件void InsertLineAfter()在當(dāng)前行后插一行void EnterLine()在當(dāng)前實(shí)現(xiàn)換行功能,即把當(dāng)前字符以后的字符下移一行void DeleteCurrentLine()N/A刪除當(dāng)前行void Delete()CHAR_NOTE *pChar刪除當(dāng)

26、前字符int Undo()N/A實(shí)現(xiàn)Undo功能void SetBlock()int x1, int y1, int x2, int y2設(shè)置塊void ClearBlock()N/A去除定義的塊其中Document是由DOCUMENT的構(gòu)造體定義的變量。DOCUMENT定義如下:struct DOCUMENT_typeLINE_NOTE *pHead;LINE_NOTE *pTail;LINE_NOTE pCur;/*當(dāng)前行的指針*/CHAR_NOTE pCChar;/*點(diǎn)前字符指針*/int Caretx;int Lines;其中pCur指向當(dāng)前接受操作的一行,pCChar指向當(dāng)前行中接受

27、操作的一個(gè)字符,假設(shè)為NULL,那么指向該行的最末。SeekChar(), NextChar(), PreChar(), SeekLine(), NextLine(), PreLine()等函數(shù)都是設(shè)定pCChar和pLine的函數(shù)。一些插入、刪除的函數(shù)要求在之前將pCur和pCChar設(shè)置好。EDITOR.C函數(shù)稱號(hào)參數(shù)聲明功能引見(jiàn)void DisplayAll(int Lines)顯示當(dāng)前頁(yè)的模塊void KeyUp()光標(biāo)鍵控制模塊void KeyDown()void KeyLeft()void KeyRight()void KeyEnter()回車換行控制模塊void KeyEsc()

28、ESC鍵控制模塊void KeyCtrl_Y()刪除一行(Ctrl-Y)控制模塊void KeyPagedown()翻頁(yè)控制模塊void KeyPageup()void KeyF3()快控制模塊void KeyF4()void KeyF5()void KeyBackspace()回退鍵控制模塊void KeyDelete()刪除鍵控制模塊void KeyHome()將光標(biāo)移到行首void KeyEnd()將光標(biāo)移到行末void KeyCtrl_Z()Undo 模塊int QuitBox()退出訊問(wèn)模塊int SaveBox()保管文件對(duì)話框void CheckXY()檢查坐標(biāo)函數(shù)void Ad

29、dChar(char c)添加一個(gè)字符模塊void AddString(char *s)添加字符串模塊void _EditorInit()編輯器初始化模塊void Processor()編輯環(huán)境的主要處置模塊int ScrollDown(int n)滾屏函數(shù)int ScrollUp(int n)void Gotoxy(int x, int y)挪動(dòng)光標(biāo)函數(shù)void SetBlockStart()設(shè)置塊的起始和終點(diǎn)模塊void SetBlockEnd()void MakeBlock()生成一個(gè)塊int Load(char *Filename)讀入一個(gè)文件BITMAP.HI. How come.

30、當(dāng)我們?cè)谠O(shè)計(jì)圖形按鈕和菜單功能的時(shí)候,首先思索運(yùn)用即時(shí)繪圖來(lái)實(shí)現(xiàn)各種動(dòng)態(tài)效果,然而即時(shí)繪圖有很多缺憾:在程序中參與鼠標(biāo)支持后,即時(shí)繪圖會(huì)受鼠標(biāo)的影響,詳細(xì)就是鼠標(biāo)指針也是位圖,在繪圖時(shí)能夠鼠標(biāo)指針會(huì)遮蓋部分區(qū)域?qū)е吕L圖函數(shù)不能正常任務(wù),從而留下這些區(qū)域沒(méi)有正常顯示,除非經(jīng)常刷新。繪圖函數(shù)是經(jīng)過(guò)一個(gè)一個(gè)像素畫(huà)到屏幕上去的,可見(jiàn)效率是比較低的。 因此,我們需求有可以快速地把圖片顯示到屏幕上。通常有兩種做法:1.直接寫(xiě)入屏幕緩沖區(qū),但運(yùn)用了Turbo C/C+的圖形庫(kù)之后就不行了我們這個(gè)程序曾經(jīng)運(yùn)用了圖形庫(kù),再更改就太.,2.運(yùn)用Turbo C/C+提供的一些直接寫(xiě)屏的函數(shù):getimage,put

31、image,imagesize。這些函數(shù)是可以實(shí)現(xiàn)動(dòng)畫(huà)效果的。但是我的想法是可以動(dòng)態(tài)的生成菜單項(xiàng),即根據(jù)菜單項(xiàng)中字符串的大小來(lái)決議菜單項(xiàng)的大小。于是就思索本人來(lái)生成Turbo C/C+運(yùn)用的Bitmap Buffer.II. Crack it. 要直接生成Bitmap Buffer,必然需求了解它的構(gòu)造和各方面的細(xì)節(jié)。然而B(niǎo)orland公司從來(lái)就沒(méi)有仔細(xì)的描畫(huà)getimage函數(shù)所運(yùn)用的圖形緩沖,只是給出前兩個(gè)字分別是圖片的寬和高。沒(méi)方法了,破解吧,也好過(guò)過(guò)做個(gè)軟件黑客的癮,呵呵! 首先,做個(gè)程序?qū)?6種色素分別畫(huà)到屏幕上原為豎立的,現(xiàn)將它橫過(guò)來(lái)便于顯示: 將它用getimage保管到一塊內(nèi)存

32、區(qū)域中,并且一個(gè)字節(jié)一個(gè)字節(jié)地顯示出來(lái):00000f00圖片的寬width和高h(yuǎn)eight)00000000Palette 0,默以為BLACK00000080Palette 1, BLUE00008000Palette 2, GREEN00008080Palette 3, CYAN00800000Palette 4, RED00800080Palette 5, MAGENTA00808000Palette 6, BROWN00808080Palette 7, LIGHTGRAY80000000Palette 8, DARKGRAY80000080Palette 9, LIGHTBLUE800

33、08000Palette 10, LIGHTGREEN80008080Palette 11, LIGHTCYAN80800000Palette 12, LIGHTRED80800080Palette 13, LIGHTMAGENTA80808000Palette 14, YELLOW80808080Palette 15, WHITE0000 終了字 明白了嗎?Turbo C/C+定義了16種調(diào)色板顏色經(jīng)過(guò)四個(gè)字節(jié)來(lái)表示,哪種顏色運(yùn)用哪些字節(jié)一目了然吧!這些是經(jīng)過(guò)一條豎直的16色線得到的,那么畫(huà)一條橫線的情況會(huì)是怎樣樣呢?好,首先畫(huà)一條8個(gè)像素的藍(lán)色橫線: 再次用getimage的方法將緩沖區(qū)的

34、字節(jié)都顯示出來(lái):07000000同上但這次寬是7+1個(gè)像素,高為1個(gè)像素000000FF看到了吧,對(duì)比上文,藍(lán)色像素只同第四個(gè)字節(jié)相關(guān)哦0000 經(jīng)過(guò)以上的例子,我們?cè)?jīng)對(duì)Turbo C/C+的圖形緩沖區(qū)有了初步的了解,接下來(lái).嗯.當(dāng)然是更深化的研討,呵呵,我們要從一個(gè)井底之蛙變成一只活蹦亂跳的青蛙哦。OK,Lets go! 經(jīng)過(guò)再次的實(shí)驗(yàn),我們將藍(lán)色橫線伸長(zhǎng)為16個(gè)像素或者其它大于8個(gè)像素也可,主要用于驗(yàn)證,我們會(huì)發(fā)現(xiàn)緩沖區(qū)變?yōu)椋?F000000寬為15+1個(gè)像素000000000000FFFF奇異吧,為什么呢0000 呵呵,這就是Borland公司的巨匠們?cè)O(shè)下的圈套哦,一不小心就會(huì)迷失方向

35、。其實(shí)那是相當(dāng)容易的一個(gè)問(wèn)題.那就是.,等一下,別急,讓我們來(lái)詳細(xì)討論一番: 首先,在圖形緩沖區(qū)中,像素信息是一行一行記載的,每一行又由許多組數(shù)據(jù)組成,每一組數(shù)據(jù)由四個(gè)字節(jié)組成,并且一組數(shù)據(jù)可以保管8個(gè)像素。那么,每四個(gè)字節(jié)又是如何保管8個(gè)像素的信息的呢?從上文可以知道,每一種調(diào)色板顏色在這四個(gè)字節(jié)中對(duì)應(yīng)特定的幾個(gè)字節(jié),而且一組數(shù)據(jù)中的第一個(gè)像素在對(duì)應(yīng)字節(jié)上的第一位設(shè)為1,第二個(gè)像素在第二位設(shè)為1,.,以此類推。假設(shè)還搞不明白,請(qǐng)看下面的圖示: 00第一個(gè)字節(jié) 00第二個(gè)字節(jié) 00第三個(gè)字節(jié) FF第四個(gè)字節(jié) 第四個(gè)字節(jié)全賦值為1闡明橫向延續(xù)畫(huà)8個(gè)藍(lán)點(diǎn)。假設(shè)有顏色不一樣的像素彼此交錯(cuò)呢?呵呵,很

36、簡(jiǎn)單,也是按照這個(gè)規(guī)律,第幾個(gè)像素就在其對(duì)應(yīng)字節(jié)的第幾位上設(shè)為1。 其次,各組像素信息設(shè)置好以后,需求將每組的四個(gè)字節(jié)交錯(cuò)陳列,也就是先第一組的第一個(gè)字節(jié),第二組的第一個(gè)字節(jié),.,第一組的第二個(gè)字節(jié),第二組的第二個(gè)字節(jié),.,第一組的第三個(gè)字節(jié),第二組的第三個(gè)字節(jié),.,以此類推。 再次,當(dāng)一行信息處置完成后,不論其能否有多余,都重新建立新的一行。總之,緩沖區(qū)的每一行都是互不相關(guān)的。 至此,Turbo C/C+的圖形緩沖區(qū)中像素信息在橫向和縱向上的表示方法,我們都曾經(jīng)搞清楚了。如今,我想大家都有點(diǎn)摩拳擦掌了吧,讓我們來(lái)小試身手。下面是一張簡(jiǎn)單的圖片分辨率是165:0f000400留意寬和高分別為原

37、圖片減10efb0efb0efbffff7efb7efb7efbffff782078207820ffff7efb7efb7efbffff0efb0efb0efbffff0000 這個(gè)例子能充分了解了嗎先用2進(jìn)制編碼,再轉(zhuǎn)成16進(jìn)制?好,我們繼續(xù)我們的征程.III. First Use the Power . 經(jīng)過(guò)上面的“潛心研討之后,我就開(kāi)場(chǎng)動(dòng)手編了一系列的函數(shù)來(lái)處置Turbo C/C+的圖形緩沖區(qū),還有個(gè)函數(shù)直接將Windows的BMP文件這個(gè)格式最簡(jiǎn)單嘛轉(zhuǎn)成圖形緩沖區(qū)的格式,以便直接調(diào)用putimage將其顯示在屏幕上,以下是一些函數(shù)的闡明。1. void far *LoadImage(c

38、har *pszFileName); 將文件名為pszFileName的16色BMP文件裝載到圖形緩沖區(qū),前往值為圖形緩沖區(qū)的指針地址。留意:ceil(寬度/8)*4*高度6的大小要求不能超越64KB。2. void SetPalette(FILE *pFile); 根據(jù)16色BMP文件的調(diào)色板來(lái)設(shè)置VGAHI方式下的調(diào)色板,pFile為文件句柄的指針。3. void ConvertLine(BYTE *pbBMPLine, BYTE *pbLine, BYTE bBMPLineSize, BYTE bLineSize); 將一行BMP像素信息轉(zhuǎn)成圖形緩沖格式。 1pbBMPLine為BMP文

39、件一行數(shù)據(jù)的指針; 2pbLine為該行圖形緩沖區(qū)的指針; 3bBMPLineSize為BMP文件該行數(shù)據(jù)的字節(jié)數(shù); 4bLineSize為該行圖形緩沖區(qū)的字節(jié)數(shù)。4. void ConvertPixels(BYTE *pbBMPGroupInfo, BYTE *pbGroupInfo, BYTE bBMPGroupSize); 將一行中的一組BMP像素信息8個(gè)像素轉(zhuǎn)換成圖形緩沖格式。 1pbBMPGroupInfo為BMP文件該行中一組像素?cái)?shù)據(jù)的指針; 2pbGroupInfo為該組圖形緩沖區(qū)的指針; 3bBMPGroupSize為BMP文件該組數(shù)據(jù)的字節(jié)數(shù)。由于BMP文件最后一組像素是實(shí)踐

40、的字節(jié)數(shù),即2個(gè)像素每字節(jié),然而圖形緩沖區(qū)無(wú)論一組有多少像素小于等于8個(gè)都是四個(gè)字節(jié),故要設(shè)定BMP文件在該組像素?cái)?shù)據(jù)的字節(jié)數(shù)。5. void far *CreateBuffer(WORD wWidth, WORD wHeight, BYTE bBkColor); 根據(jù)給定的寬度wWidth,高度wHeight來(lái)創(chuàng)建一個(gè)圖形緩沖區(qū),背風(fēng)光是bBkColor所指定的顏色。留意:ceil(寬度/8)*4*高度6的大小要求不能超越64KB。IV. Future Improvement . 以后可以針對(duì)Turbo C/C+的圖形緩沖區(qū),編寫(xiě)一系列的繪圖函數(shù),如畫(huà)點(diǎn),畫(huà)線,畫(huà)圓等等,有了這些函數(shù),我們就

41、可以動(dòng)態(tài)地修正緩沖區(qū),即時(shí)地改動(dòng)緩沖區(qū)的內(nèi)容,以便可以用putimage輕而易舉地直接把改動(dòng)的畫(huà)面顯示到屏幕上。置信這樣做還是有一定的運(yùn)用價(jià)值的,呵呵,只是如今Windows如日中天托胎于Dos,卻又大義滅親,而Dos曾經(jīng)無(wú)人問(wèn)津了??!WINFUNC.HI. Design Purpose . 在“遙遠(yuǎn)的過(guò)去,Dos下的編輯器很少有美麗的圖形界面。而如今,我們習(xí)慣了Windows下花哨絢麗的界面,回過(guò)頭來(lái)制造Dos下的文本編輯器,不來(lái)點(diǎn)圖形化的見(jiàn)面,難免有點(diǎn)對(duì)不起我們的視網(wǎng)膜,至少是有點(diǎn)不習(xí)慣吧!于是,我們決議制造一個(gè)在Turbo C/C+的圖形方式VGAHI640480 16色方式下的中文圖形

42、編輯器。 時(shí)下,流行模塊化、面向?qū)ο蠡某绦蛟O(shè)計(jì)方法,但我們是用C言語(yǔ)來(lái)編寫(xiě)這個(gè)軟件,就不能夠大量地運(yùn)用C+的面向?qū)ο蟮囊?。因此,我就只是設(shè)計(jì)了這個(gè)頭文件,里面包含了,窗體,按鈕,菜單的構(gòu)造,以及對(duì)這些對(duì)象操作的一系列函數(shù)。II. The Data Structure . 由于我運(yùn)用了一些面向?qū)ο蟮乃枷耄虼艘搽y免要建立包含這些對(duì)象詳細(xì)屬性的構(gòu)造。下面是我建立的數(shù)據(jù)構(gòu)造以及它們的引見(jiàn): 1.窗體構(gòu)造struct WindowWORD wX;左上角X坐標(biāo)WORD wY;左上角Y坐標(biāo)WORD wWidth;寬度WORD wHeight;高度BYTE bColor;前風(fēng)光BYTE bBackCol

43、or;背風(fēng)光BYTE bTopColor;上邊框顏色BYTE bBottomColor;下邊框顏色BYTE bLeftColor;左邊框顏色BYTE bRightColor;右邊框顏色;typedef struct Window WINDOW;typedef struct Window * PWINDOW; 2.按鈕構(gòu)造struct Buttonchar *pszTitle;稱號(hào)WORD wX;左上角X坐標(biāo)WORD wY;左上角Y坐標(biāo)WORD wWidth;寬度WORD wHeight;高度BYTE bColor;前風(fēng)光BYTE bBorderColor;邊框顏色BYTE bBackColor

44、;背風(fēng)光BYTE bMouseOver;判別鼠標(biāo)能否在按鈕上struct Button *pBack;上一個(gè)按鈕指針struct Button *pNext;下一個(gè)按鈕指針struct Menu *pMenu;對(duì)應(yīng)的菜單指針;typedef struct Button BUTTON;typedef struct Button * PBUTTON; 按鈕數(shù)據(jù)構(gòu)造表示圖: 按鈕 1按鈕 2按鈕 3 . 按鈕 N 3.菜單項(xiàng)構(gòu)造struct MenuItemchar *pszTitle;稱號(hào)void far (*pFunction)();包含的指向函數(shù)的指針struct MenuItem *pNex

45、t;下一個(gè)菜單項(xiàng)指針;typedef struct MenuItem MENUITEM;typedef struct MenuItem * PMENUITEM; 4.菜單款式構(gòu)造struct MenuStyleBYTE bColor;前風(fēng)光BYTE bBorderColor;邊框顏色BYTE bBackColor;背風(fēng)光BYTE bItemColor;菜單項(xiàng)顏色;typedef struct MenuStyle MENUSTYLE;typedef struct MenuStyle * PMENUSTYLE; 5.菜單構(gòu)造struct MenuWORD wWidth;寬度WORD wHeight

46、;高度BYTE bNo;當(dāng)前指向第幾個(gè)菜單項(xiàng)BYTE bNum;菜單項(xiàng)的數(shù)量BYTE bShown;判別菜單能否被顯示struct MenuStyle *pStyle;對(duì)應(yīng)的菜單款式指針struct MenuItem *pFirst;指向第一個(gè)菜單項(xiàng)void far *pCovered;菜單所覆蓋的屏幕緩沖的指針void far *pLightBar;菜單項(xiàng)亮條圖形緩沖的指針;typedef struct Menu MENU;typedef struct Menu * PMENU; 菜單數(shù)據(jù)構(gòu)造表示圖: 菜單 1菜單項(xiàng) 1菜單項(xiàng) 2 . 菜單項(xiàng) N 菜單款式 菜單 2 . 菜單款式可以為多個(gè)菜

47、單共享 II. The Functions . 建立了數(shù)據(jù)構(gòu)造之后,就著手開(kāi)場(chǎng)大刀闊斧地進(jìn)展編寫(xiě)函數(shù)的最后攻堅(jiān)戰(zhàn)了!以下是一系列的函數(shù): 1.窗體函數(shù)void CreateWindow(char *pszTitle, PWINDOW pWindow, int hasStatusBar);根據(jù)給定的窗體標(biāo)題,定義好的窗體構(gòu)造來(lái)創(chuàng)建一個(gè)窗體,并顯示在屏幕上。 1pszTitle為窗體的標(biāo)題; 2pWindow為窗體構(gòu)造的指針; 3hasStatusBar決議窗體能否帶有形狀欄。void *CopyWindow(PWINDOW pWindow);將所給窗體所將要覆蓋的屏幕區(qū)域保管到一個(gè)圖形緩沖區(qū),p

48、Window為所給窗體的指針,前往值為指向該圖形緩沖區(qū)的指針。 void HideWindow(PWINDOW pWindow, void *pCovered);將顯示的窗體隱藏起來(lái)。 1pWindow為所要隱藏的窗體; 2pCovered為預(yù)先保管的屏幕區(qū)域。 2.按鈕函數(shù)void CreateButton(PBUTTON pButton);根據(jù)定義好的按鈕構(gòu)造來(lái)創(chuàng)建一個(gè)按鈕,并顯示在屏幕上,pButton為按鈕構(gòu)造的指針。PBUTTON AddButton(char *pszTitle, PBUTTON pButton, PMENU pMenu, WORD x, WORD y, BYTE

49、bColor, BYTE bBorderColor, BYTE bBackColor);添加一個(gè)按鈕在一個(gè)按鈕鏈表雙向鏈表中。 1pszTitle為所加按鈕的稱號(hào); 2pButton為按鈕鏈表中的前一個(gè)按鈕; 3pMenu為所加按鈕所對(duì)應(yīng)的菜單的指針; 4x為所加按鈕左上角的X坐標(biāo); 5y為所加按鈕左上角的Y坐標(biāo); 6bColor為所加按鈕的前風(fēng)光; 7bBorderColor為所加按鈕的邊框顏色; 8bBackColor為所加按鈕的背風(fēng)光;函數(shù)前往值為所添加的按鈕的指針。PBUTTON SearchButton(char *pszTitle, PBUTTON pButton);根據(jù)給定的字符

50、串,在按鈕鏈表中搜索所需的按鈕。 1pszTitle為要搜索按鈕的稱號(hào); 2pButton為按鈕鏈表中恣意一個(gè)按鈕皆可。函數(shù)前往值為所需按鈕的指針。void SetButtonUp(PBUTTON pButton);將pButton所指向的按鈕設(shè)置為按鈕浮起狀。void SetButtonDown(PBUTTON pButton);將pButton所指向的按鈕設(shè)置為按鈕按下?tīng)?。void SetButtonBack(PBUTTON pButton);將pButton所指向的按鈕設(shè)置為原狀。PBUTTON ChooseButton(char *pszTitle, PBUTTON pButton,

51、PBUTTON pBtnHead);根據(jù)給定的字符串,將按鈕鏈表中的指定的按鈕設(shè)置為浮起狀,并將對(duì)應(yīng)的菜單都顯示出來(lái)這是用來(lái)實(shí)現(xiàn)菜單功能的函數(shù)。 1pszTitle為要搜索按鈕的稱號(hào); 2pButton為當(dāng)前曾經(jīng)選定的按鈕需求將其恢復(fù)原狀用,否那么置為NULL; 3pBtnHead為按鈕鏈表中恣意一個(gè)按鈕的指針作為頭指針;函數(shù)前往值為新選擇的按鈕指針。PBUTTON GoButtonLeft(PBUTTON pButton);將按鈕和菜單項(xiàng)選擇擇向左挪動(dòng),pButton為當(dāng)前顯示的按鈕這也是用來(lái)實(shí)現(xiàn)菜單功能的函數(shù)。PBUTTON GoButtonRight(PBUTTON pButton);將

52、按鈕和菜單項(xiàng)選擇擇向右挪動(dòng),pButton為當(dāng)前顯示的按鈕這也是用來(lái)實(shí)現(xiàn)菜單功能的函數(shù)。 3.菜單函數(shù)void DisplayMenu(PMENU pMenu, PBUTTON pButton);顯示所指定的菜單。 1pMenu為菜單的指針; 2pButton為對(duì)應(yīng)菜單的按鈕的指針用來(lái)決議菜單的坐標(biāo)。void HideMenu(PMENU pMenu, PBUTTON pButton);隱藏所指定的菜單。 1pMenu為菜單的指針; 2pButton為對(duì)應(yīng)菜單的按鈕的指針用來(lái)決議菜單的坐標(biāo)。PMENUITEM AddMenuItem(char *pszTitle, PMENU pMenu, v

53、oid far (*pFunction)();根據(jù)給定字符串作為菜單項(xiàng)名,添加一項(xiàng)菜單項(xiàng)。 1pszTitle為菜單項(xiàng)名; 2pMenu為菜單項(xiàng)所在的菜單的指針; 3pFunction為函數(shù)的指針,用以實(shí)現(xiàn)菜單項(xiàng)的功能。函數(shù)前往值為新添加的菜單項(xiàng)的指針。void SelectMenu(PMENU pMenu, PBUTTON pButton, int iNo);選擇菜單的某一菜單項(xiàng),即將光條移到該菜單項(xiàng)。 1pMenu為菜單項(xiàng)所在菜單的指針; 2pButton為菜單對(duì)應(yīng)的按鈕的指針用以給出菜單的坐標(biāo); 3iNo決議第幾個(gè)菜單項(xiàng)。void UnSelectMenu(PMENU pMenu, PB

54、UTTON pButton, int iNo);取消菜單項(xiàng)的選擇,除去光條,各參數(shù)同上。void GoMenuUp(PMENU pMenu, PBUTTON pButton);將菜單的光條向上挪動(dòng)。 1pMenu為所在菜單的指針; 2pButton為菜單對(duì)應(yīng)的按鈕的指針用以給出菜單的坐標(biāo)。void GoMenuDown(PMENU pMenu, PBUTTON pButton);將菜單的光條向下挪動(dòng),各參數(shù)同上。void ClickMenu(PMENU pMenu, PBUTTON pButton);實(shí)現(xiàn)當(dāng)前光條所在菜單項(xiàng)的功能菜單項(xiàng)構(gòu)造所含的函數(shù),各參數(shù)同上。III. Apply The H

55、eader . 以上將構(gòu)造和函數(shù)都一一給大家“欣賞了一番,不來(lái)點(diǎn)實(shí)踐的總是不完美的,對(duì)嗎?下面,我為編輯器所制造的界面face.c就是這些的實(shí)踐運(yùn)用: 1.各常量的定義 由于界面結(jié)合了鍵盤(pán)操作,所以定義了一些鍵盤(pán)鍵碼。 2.全局變量的定義1MainWin為編輯器的主窗體;2AboutWin為關(guān)于窗體;3MenuStyle為菜單款式;4MenuFile,MenuEdit,MenuSearch為各菜單;5pBtnHead為按鈕鏈表的頭指針;6pCurrentBtn代表當(dāng)前選擇的按鈕;7pCurrentMenu代表當(dāng)前顯示的菜單。 3.創(chuàng)建編輯器的界面1void SetMenus(void)函數(shù)用于

56、建立各菜單。 運(yùn)用AddMenuItem函數(shù)來(lái)添加各菜單項(xiàng),詳細(xì)運(yùn)用參照前面的函數(shù)闡明。2void SetButtons(void)函數(shù)用于建立按鈕鏈表。 運(yùn)用AddButton函數(shù)將所要添加的按鈕組成一個(gè)雙向鏈表,便于按鈕的操作。3int InitEditorInterface(void)函數(shù)用于啟動(dòng)編輯器的界面。 4.界面的操作與管理 本來(lái)還參與了鼠標(biāo)的支持mouse.h,由于Windows 2000下DOS圖形方式下,鼠標(biāo)指針不能正常顯示,而且也沒(méi)有比較好的處理方法還有就是鼠標(biāo)的操作也比較費(fèi)事,這也是很重要的一條啊,呵呵。因此,界面的操作僅限于鍵盤(pán)操作。 鍵盤(pán)的操作運(yùn)用了音訊的循環(huán)方法,

57、經(jīng)過(guò)kbhit()檢測(cè)能否有按鍵音訊,假設(shè)有那么,運(yùn)用分支構(gòu)造來(lái)處置各個(gè)音訊按鍵健碼。 5.主要就是這些了.GOUTPUT.H功能引見(jiàn):參數(shù)闡明:void InitialzeGraph(void);初始化整個(gè)圖形輸出函數(shù)庫(kù)void FinishMission(void);圖形輸出函數(shù)庫(kù)的析構(gòu)函數(shù)char far *ObtainAddress(void);獲得ROM中ASCII碼的地址void DisableCursor(void);制止光標(biāo)的顯示void EnableCursor(void);允許表表的顯示void ShowCursor(unsigned int x,unsigned int

58、y);x,y分別為光標(biāo)左上角的x和y坐標(biāo)顯示光標(biāo)void RecoverCursor(unsigned int x,unsigned int y);x,y分別為光標(biāo)左上角的x和y坐標(biāo)恢復(fù)光標(biāo)顯示位置的圖像void interrupt far CursorHandler();顯示光標(biāo)的時(shí)間中段句柄的函數(shù)int Locate(unsigned int x,unsigned int y);x,y分別為光標(biāo)左上角的x和y坐標(biāo)坐標(biāo)定位int CursorLeft(void);光標(biāo)左移int CursorRight(void);光標(biāo)右移int CursorUp(void);光標(biāo)上移int CursorDo

59、wn(void);光標(biāo)下移unsigned int GetScreenX(void);獲取光標(biāo)x軸位置unsigned int GetScreenY(void);獲取光標(biāo)y軸位置void SetSpaceLine(unsigned int n);n為行數(shù)清第n 行void SetSpaceClientLine(unsigned int n);n為列數(shù)清當(dāng)前行第n列后的一切字符void ScrollWindowUp(unsigned int n);n為行數(shù)顯示區(qū)域上滾到第n行void ScrollWindowDown(unsigned int n);n為行數(shù)從第n行后顯示區(qū)域下滾void GPu

60、tc(unsigned char s1,unsigned char s2);字符的第一個(gè)內(nèi)碼,假設(shè)字符為ASCII那么s1位字符的ASCII碼,s2=0;假設(shè)字符為漢字那么s1,s2分別為漢字的區(qū)位碼顯示字符包括ASCII和漢字void GetHZ(char incode,char bytes); incode漢字的內(nèi)碼數(shù)組前兩個(gè)字節(jié)有用bytes前往漢字字模的數(shù)組獲取漢字字模void CloseHZK();封鎖漢字字模庫(kù)文件void OpenHZK(void);翻開(kāi)漢字字模庫(kù)文件void PutASCColor(unsigned int x0,unsigned int y0, unsigne

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論