老兵新傳

出版時(shí)間:2012-8  出版社:清華大學(xué)出版社  作者:張寧  頁數(shù):733  字?jǐn)?shù):1350000  
Tag標(biāo)簽:無  

前言

相信很多讀者都有“書本上學(xué)到的編程知識(shí)與實(shí)際開發(fā)中的應(yīng)用相差很大”的感受。在軟件的開發(fā)實(shí)踐中,怎樣實(shí)現(xiàn)一些功能或如何解決一些問題很多時(shí)候都是無法從教科書上找到答案的。本書正是面向Visual Basic編程和開發(fā)實(shí)踐,直接介紹如何實(shí)現(xiàn)軟件中的實(shí)際功能,直擊編程時(shí)的各種疑難問題,解決難題,幫你鋪路!誰說Visual Basic不如人?筆者見過不少程序員,他們討論最多的是使用什么語言來編程,使用什么語言做開發(fā),似乎他們對使用何種語言很敏感:使用“時(shí)髦”的語言似乎能提高自己的技術(shù)含量,使用“傳統(tǒng)”的語言似乎有礙自己的開發(fā)水平。然而事實(shí)是這樣嗎?計(jì)算機(jī)語言的發(fā)展相當(dāng)迅速,許多嶄新的程序設(shè)計(jì)語言不斷涌現(xiàn),現(xiàn)有語言之間的競爭又此起彼伏,今年某某語言比較流行,在排行榜名列前茅,而明年這種語言又可能被其他語言所打敗。許多程序員就在語言的選擇之間輾轉(zhuǎn),剛剛接觸到一門語言,還沒來得及徹底搞懂,就發(fā)現(xiàn)這種語言“過時(shí)”了,更新的語言出現(xiàn)了,于是就轉(zhuǎn)向另外一種語言;而新的語言沒學(xué)多久,發(fā)現(xiàn)又有了更新的語言……他們總是把焦點(diǎn)放在選用何種語言上,頻繁地在語言的切換中追趕所謂的“時(shí)髦”,雖然“了解”(不能達(dá)到掌握)的語言不少,可是沒有一種能夠精通,也沒有一種能夠得心應(yīng)手地使用,真正地把它應(yīng)用到解決實(shí)際問題的程序設(shè)計(jì)中。不可否認(rèn),一款好的程序設(shè)計(jì)語言會(huì)提高編程的效率,結(jié)構(gòu)清晰、語法嚴(yán)謹(jǐn)、支持面向?qū)ο蟮鹊奶匦圆粌H可以使程序的開發(fā)事半功倍,而且使編譯后的可執(zhí)行程序的運(yùn)行效率也會(huì)提高。然而使用一種“最新”的語言就意味著這個(gè)程序員能力很強(qiáng)、很優(yōu)秀嗎?我也見過不少真正很優(yōu)秀的程序員,或者真正的編程“高手”,他們對待語言種類的選擇是很淡漠的。他們經(jīng)常說使用何種語言開發(fā)都是一樣的,事實(shí)上他們也完全有能力在很短的時(shí)間內(nèi)快速地掌握一門新的語言,并能很快地將這種語言使用到自己的項(xiàng)目開發(fā)中。這種能力不是所有程序員都具有的,那么這種能力來自何處?這些編程“高手”都有一個(gè)共同點(diǎn):雖然可以掌握數(shù)種語言,但他們都有一種或少數(shù)幾種是自己最“精通”的,是自己用起來最得心應(yīng)手的。因此“高手”的能力來自于對一門語言的精通,來自于對一門語言的徹底掌握和大量的實(shí)踐經(jīng)驗(yàn)!因?yàn)椴煌挠?jì)算機(jī)語言雖然在語法上會(huì)有這樣或那樣的不同,但在編程思路和算法設(shè)計(jì)上都有許多相同之處:當(dāng)徹底地掌握了一種語言的時(shí)候,再遇到一種新的語言,只需要了解一下它的語法,再有一本函數(shù)手冊,不難立即把它用起來!因此,筆者這里想建議的是,我們不要把過多的精力放在考察何種語言是最新的、何種語言是最“時(shí)髦”的、或者每年排行第幾上,選擇自己喜歡的一種語言,徹底掌握它,然后把精力放在如何使用它提高自己真正的編程能力。再大量地基于這種語言編程實(shí)踐,假以時(shí)日你的編程能力就會(huì)達(dá)到一個(gè)很高的層次,到時(shí)再掌握任何一種新的語言就都不是一件難事!Visual Basic(以下簡稱VB)這種程序設(shè)計(jì)語言,真可謂是“一波多折”,它受到過許多人的青睞,同時(shí)也受到過許多人的“白眼”。VB具有許多優(yōu)點(diǎn):比如簡單易學(xué)、容易上手、封裝性好、安全、勝任快速開發(fā)、是個(gè)人獨(dú)立開發(fā)的首選。這些優(yōu)點(diǎn)足以成為我們使用VB的理由。因?yàn)樵诋?dāng)今時(shí)代,效率就意味著競爭,一種勝任快速開發(fā)的語言就代表著高效率。比爾?蓋茨曾自豪地說:“世界上有80%的人在用VB編程!”,“微軟肯定大力發(fā)展VB,VB當(dāng)之無愧是Windows平臺(tái)上最好的開發(fā)軟件”。然而事物都有兩面性,任何一種語言在具有它自身優(yōu)點(diǎn)的同時(shí),都勢必會(huì)具有另外的一些缺點(diǎn),VB也不例外。于是許多人抓住VB的缺點(diǎn)大做文章,不少人把VB冠以“弱語言”、“玩具語言”等的帽子,他們認(rèn)為“編VB的人太沒水平”、“VB沒有指針,不能實(shí)現(xiàn)復(fù)雜的數(shù)據(jù)結(jié)構(gòu)”、“VB功能太弱,不可能寫出系統(tǒng)級的程序”……其實(shí)大多這樣的人一般都是使用其他語言編程的,對VB僅有少數(shù)的了解或者根本沒有了解,他們并沒有深入地去研究過VB,得出這樣的結(jié)論是不是過于武斷?VB最大的不足是系統(tǒng)提供的功能少,直接由VB開發(fā)出的軟件不如由Visual C++等語言開發(fā)出的功能強(qiáng)大,這一點(diǎn)筆者也不否認(rèn),但這只是表面現(xiàn)象,難道真的很多功能用VB做不出來嗎?筆者在此要強(qiáng)調(diào)的是:VB同樣很強(qiáng)大,其他語言能夠開發(fā)的功能,VB照樣能做!本書正是為了增強(qiáng)VB的功能、彌補(bǔ)VB這個(gè)所謂“缺點(diǎn)”為目的的,讓喜歡VB的讀者在當(dāng)前眾多語言的競爭中,仍然能夠把VB用起來,發(fā)揮出VB應(yīng)有的生命力!當(dāng)讀完本書后你一定會(huì)發(fā)現(xiàn),VB并不弱!怎樣才能讓Visual Basic強(qiáng)大起來?Visual Basic從誕生之日起已經(jīng)經(jīng)歷了數(shù)個(gè)版本的變化,直到現(xiàn)在Visual Basic.Net的出現(xiàn)。Visual Basic.Net具備了面向?qū)ο蟮慕^大部分特性,使代碼更加方便維護(hù)、可擴(kuò)展性好、支持代碼重用等,而且在語法上也做了很多非常有益的改進(jìn)。因此,有不少VB程序員轉(zhuǎn)向VB.Net。然而,VB.Net與VB相比較有了非常多的變化,并不是VB語言的簡單升級,而可以看作是一種嶄新的語言,新的VB.Net中有許多內(nèi)容需要重新學(xué)習(xí)。VB.Net的程序與VB的程序也有很多不兼容的成份,很多VB程序并不能直接升級為VB.Net,而需要重新編寫,這對于先前使用VB開發(fā)的大型系統(tǒng)的升級和維護(hù)來說無疑是一場災(zāi)難!另外,使用VB.Net開發(fā)的程序需要用戶安裝.Net Framework才能運(yùn)行,程序發(fā)布時(shí)就不得不帶有比較龐大的安裝包,這為使用Windows XP或以下操作系統(tǒng)的用戶帶來許多不便。再有,使用VB.Net開發(fā)的程序編譯后是“中間代碼”,而不是傳統(tǒng)意義上的標(biāo)準(zhǔn)Windows可執(zhí)行文件,這也不能滿足很多的開發(fā)需求。因此,在當(dāng)前階段,盡管VB.Net蓬勃發(fā)展,而且代表了未來的一種發(fā)展趨勢;但就目前形勢來看,VB.Net仍無法取代VB,VB語言仍有它的一席之地。總之,要增強(qiáng)VB的功能,或者要解決在VB程序設(shè)計(jì)中遇到的問題,仍然需要通過VB來解決,而VB.Net是幫不上忙的。因此,本書并不打算介紹使用VB.Net開發(fā)程序,而把主要問題仍然放在VB上。那么怎樣才能夠依靠VB自身,增強(qiáng)VB的功能呢?VB支持Windows API函數(shù)的調(diào)用,這就為VB具有“無所不能”的本領(lǐng)打下了堅(jiān)實(shí)的基礎(chǔ),因?yàn)樗羞\(yùn)行在Windows系統(tǒng)下的程序包括Windows本身的運(yùn)行,都是依靠調(diào)用這些API函數(shù)的。也就是說,無論使用任何語言編寫程序,無論語言本身提供的功能有多少,程序經(jīng)過編譯之后的可執(zhí)行文件中的機(jī)器代碼都是用于調(diào)用這些API函數(shù)。例如,Visual C++很強(qiáng)大,其中的MFC庫就是封裝的API函數(shù);使用Win32匯編語言開發(fā)Windows程序,僅使用匯編語言的基本指令,甚至可以通過直接調(diào)用API函數(shù),做出大型的軟件!在本書第二章的內(nèi)容中還要介紹在VB中實(shí)現(xiàn)指針,有了指針+API函數(shù),VB就真的可以無所不能!本書與其他書籍最大的不同之處在于,本書不僅介紹具體功能的實(shí)現(xiàn)技術(shù)和具體問題的解決方法,還講解在實(shí)際編程時(shí)尤其是在開發(fā)大型軟件時(shí)必須考慮的細(xì)節(jié)和必須處理的有可能存在潛在隱患的細(xì)微問題,使這些知識(shí)直接可以應(yīng)用于開發(fā)實(shí)踐,減少理論與實(shí)踐的“脫節(jié)”。尤其要介紹如何將實(shí)現(xiàn)這些技術(shù)的程序代碼“封裝”成通用的模塊,使這些通用模塊在以后的編程中可以得到重用。這樣,有關(guān)API函數(shù)的調(diào)用和程序的實(shí)現(xiàn)細(xì)節(jié)只需要考慮一次,在以后編程中需要某項(xiàng)功能時(shí),只要把通用模塊添加到工程中,然后直接調(diào)用模塊中的1~2個(gè)函數(shù)即可輕松實(shí)現(xiàn)。通過編寫通用模塊,不僅大大增強(qiáng)了VB程序的功能,而且減少了以后編程的工作量,程序代碼也更為簡潔、便于維護(hù)。本書所介紹的通用模塊大多數(shù)具有如下特點(diǎn):(1)封裝性強(qiáng):無論標(biāo)準(zhǔn)模塊還是類模塊都自成一體,具有較強(qiáng)的獨(dú)立性和內(nèi)聚性。主要表現(xiàn)在使用局部變量和局部API聲明、合理設(shè)計(jì)模塊內(nèi)函數(shù)的功能和參數(shù)、對其他模塊的依賴很少,像子類操作、函數(shù)指針、對象地址、對象關(guān)聯(lián)、資源釋放等復(fù)雜的操作都被封裝在模塊內(nèi)部。今后在開發(fā)新的程序時(shí),根本不必考慮這些細(xì)節(jié),也不必干預(yù)模塊內(nèi)的代碼,而只需把模塊當(dāng)做“黑匣子”添加進(jìn)工程,再通過幾個(gè)簡單的函數(shù)調(diào)用即可實(shí)現(xiàn)功能。(2)使用方便:通用模塊在實(shí)現(xiàn)功能時(shí),幾乎不需要添加任何引用或任何的ActiveX控件,而僅依靠VB基本的功能或API函數(shù)實(shí)現(xiàn)。因此模塊對各種組件或第三方控件幾乎沒有依賴,它們只是純粹的文本代碼;也就是說,只要在工程中添加幾個(gè)純文本的代碼模塊即可實(shí)現(xiàn)VB程序功能的強(qiáng)大提升。此外,模塊的設(shè)計(jì)本著讓主調(diào)程序調(diào)用負(fù)擔(dān)最低的原則,模塊編寫好后,主調(diào)程序?yàn)檎{(diào)用模塊功能而編寫的代碼極少。(3)功能強(qiáng)大:模塊中大量調(diào)用了Windows的API函數(shù),并且使用了指針,很多程序還涉及了Windows的核心??梢哉fWindows能做的,VB都能做?。?)可重用性強(qiáng):模塊可以被添加到任何工程,又可被用于工程中的任何窗體、模塊和類模塊中。(5)便于開發(fā)綠色軟件:本書所介紹的通用模塊一般屬于類模塊和標(biāo)準(zhǔn)模塊,還有少量窗體模塊,而本書不準(zhǔn)備介紹任何ActiveX控件的開發(fā)。因此使用本書所介紹的通用模塊編寫VB程序,很少或不需任何額外的引用或ActiveX控件的支持,在程序發(fā)布和安裝時(shí)也不必包含過多的系統(tǒng)文件或注冊組件。實(shí)際上使用這些通用模塊所開發(fā)的應(yīng)用程序在Windows 2000及以上系統(tǒng)可以直接運(yùn)行,根本不需要打包安裝程序和制作setup。開發(fā)通用模塊,實(shí)際上是豐富了VB程序員可以使用的函數(shù)庫和類庫,這相當(dāng)于是在VB的基礎(chǔ)上搭建了一套自己的開發(fā)環(huán)境。而這一套開發(fā)環(huán)境提供的功能,有很多比其他語言提供的還要強(qiáng)大,但使用起來卻比其他語言還要容易。這就使得用VB語言開發(fā)的程序不僅不遜色于其他語言,而且更有著VB簡單易學(xué)、容易上手的特點(diǎn)作為支持,在開發(fā)速度上也會(huì)比使用其他語言還要快。本書適合的讀者本書是介紹使用Visual Basic做高級開發(fā)的書籍,適合對Visual Basic已經(jīng)有了基本的掌握,想進(jìn)一步提高Visual Basic編程能力,以及在編程中遇到一些令人頭疼的問題而正在尋找解決方案的讀者。對使用其他語言開發(fā)Windows程序的讀者來說,書中的許多方法和編程技巧也會(huì)對他們有一定的參考價(jià)值,因?yàn)闊o論用什么語言開發(fā),Windows的運(yùn)行機(jī)制是不變的,程序的設(shè)計(jì)思路也都是可以借鑒的。本書假定讀者已具有以下知識(shí):?對Visual Basic已經(jīng)有了基本的掌握,如常用控件的使用、程序結(jié)構(gòu)、變量、語句、函數(shù)、對象的屬性、事件、方法等,已經(jīng)能夠用Visual Basic編寫簡單的程序,因?yàn)楸緯粫?huì)涉及這些基本的Visual Basic編程方法;?計(jì)算機(jī)基礎(chǔ)知識(shí)的一般了解,如進(jìn)制轉(zhuǎn)換、內(nèi)存、指針等;?最基本的C語言的基礎(chǔ)知識(shí),因?yàn)閃indows API函數(shù)是用C語言編寫的,為了能夠讀懂參考資料,讀者需要了解一些最基本的C語言知識(shí);但讀者不需要完全掌握C語言,只需要了解可能用到的C語言常量、變量、數(shù)組、結(jié)構(gòu)體、指針等數(shù)據(jù)類型和簡單的函數(shù)結(jié)構(gòu)。關(guān)于本書的內(nèi)容本書分為三個(gè)篇章:第一篇:高級技術(shù)篇本篇介紹使用Visual Basic進(jìn)行高層次軟件開發(fā)和解決實(shí)際問題的技術(shù),這些技術(shù)在本書后續(xù)章節(jié)的內(nèi)容中也會(huì)被大量用到。例如:如何在VB中使用指針、開發(fā)常用的數(shù)據(jù)結(jié)構(gòu)模塊、開發(fā)實(shí)現(xiàn)子類技術(shù)的通用模塊、Windows窗口、控件、消息的運(yùn)行機(jī)制、如何通過API函數(shù)創(chuàng)建控件、如何開發(fā)支持多國語言版的程序等。在本篇章節(jié)中還將介紹如何解決VB編程時(shí)一些常見的并很棘手的問題。這些技術(shù)大多是以編寫為“通用模塊”的形式實(shí)現(xiàn)的,使技術(shù)細(xì)節(jié)只需考慮一次,在以后的編程中可以直接把“通用模塊”當(dāng)做“黑匣子”來調(diào)用。第二篇:功能模塊篇本篇介紹如何在VB中編寫一些通用的功能模塊,以幫助開發(fā)人員實(shí)現(xiàn)VB系統(tǒng)不曾提供的、但開發(fā)軟件時(shí)卻常需要實(shí)現(xiàn)的重要功能,并勝任快速開發(fā):如增強(qiáng)圖形界面、菜單高級控制、文件操作、注冊表操作、系統(tǒng)熱鍵、系統(tǒng)托盤圖標(biāo)等。這些模塊大多也可以看作是對API函數(shù)的封裝,實(shí)現(xiàn)這些功能的API函數(shù)都被自己編寫的、調(diào)用起來更為方便的簡單函數(shù)所替代。這在以后的編程中,再不必考慮細(xì)節(jié),并簡化程序設(shè)計(jì),大大減少編程工作量,提高開發(fā)效率。第三篇:應(yīng)用模塊篇有一句格言講到:“一個(gè)具體的問題勝過數(shù)千個(gè)抽象的方案”。本篇就針對在軟件開發(fā)時(shí)可能遇到的具體編程問題,每章開發(fā)一個(gè)通用模塊,實(shí)現(xiàn)軟件中一個(gè)常見的功能。限于篇幅,本篇只介紹有代表性的幾種功能的通用模塊實(shí)現(xiàn),如智能組合框、定時(shí)器、進(jìn)度指示工作助手、控件的邊框調(diào)整、氣泡提示、表達(dá)式計(jì)算等。希望讀者能夠舉一反三,并自己開發(fā)出更多的通用模塊,使這些模塊能夠像“積木”一樣被積累,在需要時(shí)可隨時(shí)被添加到VB工程中使用,為自己的VB編程實(shí)踐和軟件開發(fā)添磚加瓦。讀過本書后,相信廣大的Visual Basic編程人員和VB愛好者,尤其是使用Visual Basic語言做軟件項(xiàng)目開發(fā)的讀者,一定會(huì)有所收獲。致謝首先要感謝南開大學(xué)生命科學(xué)學(xué)院張濤教授、數(shù)學(xué)院阮吉壽教授以及醫(yī)學(xué)院楊卓教授對本書寫作的大力支持,感謝三位恩師多年來在學(xué)習(xí)和生活上無微不至的關(guān)心和幫助,他們活躍的科研思維和嚴(yán)謹(jǐn)?shù)墓ぷ鲬B(tài)度一直深深影響著我。感謝我的父母、岳父岳母和家人,他們總是默默地支持我,生活上悉心地照顧我,為我分擔(dān)壓力。特別要感謝我的妻子佳佳,為了能按時(shí)完稿,她犧牲了逛街的時(shí)間,放棄了蜜月旅行,在寫作的過程中一直陪伴著我,給我鼓勵(lì)、勇氣和信心。由于筆者水平有限,錯(cuò)謬之處在所難免,懇請專家和廣大讀者不吝賜教、批評指正。

內(nèi)容概要

  visual basic作為一種windows軟件開發(fā)工具,以簡單易用和勝任快速開發(fā)著稱,但visual
basic系統(tǒng)本身提供的功能比較少,很多重要的軟件功能不能直接實(shí)現(xiàn)?!独媳聜鳎簐isual
basic核心編程及通用模塊開發(fā)》正是介紹如何彌補(bǔ)它的這種不足、增強(qiáng)vb程序功能的書籍,但增強(qiáng)功能的代碼仍不失簡單易用的特點(diǎn),使visual
basic成為既強(qiáng)大又好用的編程工具。書中介紹了使用visual
basic語言進(jìn)行win32核心編程和高級編程的技術(shù),并面向visual
basic的開發(fā)實(shí)踐和針對編程中的常見問題,編寫了調(diào)用簡單、運(yùn)行獨(dú)立、能勝任大型軟件開發(fā)的可重用的代碼模塊,不僅大大增強(qiáng)visual
basic的功能,而且減輕編程的工作量,并使程序代碼更為簡潔。
  《老兵新傳:visual basic核心編程及通用模塊開發(fā)》屬于visual basic高級編程的書籍,適合有一定visual
basic基礎(chǔ)并想進(jìn)一步提高vb開發(fā)技能的讀者,可作為使用visual
basic語言編程的軟件開發(fā)人員、科研人員和廣大vb愛好者的提高技能的讀物。由于書中介紹了大量有關(guān)windows運(yùn)行機(jī)理和win32編程的技術(shù),因此對使用其他語言編程的windows程序設(shè)計(jì)人員也有一定參考價(jià)值。

作者簡介

  張寧,南開大學(xué)生物信息學(xué)博士和博士后,現(xiàn)任職于天津大學(xué)精密儀器與光電子工程學(xué)院,多年來一直從事生物醫(yī)學(xué)信息相關(guān)的數(shù)據(jù)分析、數(shù)據(jù)庫、軟件開發(fā)等工作。精通Visual
Basic、C語言、Windows核心編程等,有16年編程和軟件開發(fā)的實(shí)踐經(jīng)驗(yàn),積累了大量程序設(shè)計(jì)方法和編程技巧,在國內(nèi)外高水平刊物發(fā)表論文28篇,多次在各類編程競賽中獲獎(jiǎng)。

書籍目錄

《老兵新傳:visual basic核心編程及通用模塊開發(fā)》
第一篇 高級技術(shù)篇
第1章 萬丈高樓平地起,一勞永逸 打地基——知識(shí)準(zhǔn)備
1.1 使用windows api函數(shù)
1.1.1 api函數(shù)的聲明
1.1.2 使用api函數(shù)的注意事項(xiàng)
1.2 模塊化編程
1.2.1 我能在一天之內(nèi)做出一個(gè)軟件嗎
1.2.2 用標(biāo)準(zhǔn)模塊還是類模塊
1.2.3 怎樣創(chuàng)建類模塊
1.3 編程風(fēng)格
1.3.1 變量在使用前一定要定義
1.3.2 盡量不要用variant數(shù)據(jù)類型
1.3.3 代碼的縮進(jìn)和換行
1.3.4 避免重復(fù)用對象名稱做一串調(diào)用
1.3.5 boolean型條件表達(dá)式的寫法
1.3.6 字符串為空串的判斷
1.3.7 能用常量就不要用函數(shù)求值
1.3.8 數(shù)組下標(biāo)從1開始
1.3.9 用optional選項(xiàng)定義函數(shù)的參數(shù)
.1.3.10 不能濫用goto語句不代表不能用goto語句
1.3.11 盡量少用activex控件
1.4 條件編譯
1.4.1 什么是條件編譯
1.4.2 條件編譯有什么用
1.5 獲取資料
1.5.1 msdn
1.5.2 借助visual c++的頭文件
1.5.3 其他資料
第2章 這個(gè)可以有——在vb中使用指針
2.1 在vb中使用指針變量
2.1.1 什么是指針
2.1.2 如何實(shí)現(xiàn)指針變量
2.2 varptr,strptr,objptr函數(shù)和addressof運(yùn)算符
2.2.1 內(nèi)聯(lián)類型和指針類型
2.2.2 varptr,strptr和objptr函數(shù)
2.2.3 addressof運(yùn)算符
2.3 copymemory函數(shù)
2.3.1 copymemory函數(shù)的聲明和功能
2.3.2 copymemory函數(shù)用于內(nèi)聯(lián)類型的數(shù)據(jù)傳遞
2.3.3 copymemory函數(shù)用于字符串類型的數(shù)據(jù)傳遞
2.3.4 對象的弱引用
2.4 在vb中使用指針程序舉例
2.4.1 使用指針實(shí)現(xiàn)不同類型數(shù)據(jù)的交換
2.4.2 使用指針實(shí)現(xiàn)不同窗體模塊的數(shù)據(jù)交換
2.4.3 不使用數(shù)組類型的參數(shù)向函數(shù)傳遞數(shù)組
2.4.4 用一個(gè)long型參數(shù)向函數(shù)傳遞任意類型任意大小的數(shù)據(jù)
2.5 部分字節(jié)運(yùn)算的問題和解決辦法
2.5.1 or按位或運(yùn)算
2.5.2 取長整數(shù)的高位和低位
第3章 不做數(shù)據(jù)的奴隸——常用數(shù)據(jù)結(jié)構(gòu)
3.1 何謂數(shù)據(jù)結(jié)構(gòu)
3.2 堆棧
3.2.1 什么是堆棧
3.2.2 堆棧的基本算法
3.2.3 堆棧的通用模塊實(shí)現(xiàn)
3.2.4 堆棧通用模塊的使用
3.3 哈希表
3.3.1 什么是哈希表
3.3.2 哈希表的基本算法
3.3.3 哈希表的通用模塊實(shí)現(xiàn)
3.3.4 哈希表通用模塊的使用
3.3.5 哈希表類模塊與vb的collection對象的效率比較
3.4 帶“回收站”的數(shù)組
3.4.1 基本思想
3.4.2 程序?qū)崿F(xiàn)
第4章 青出于藍(lán)勝于藍(lán)——子類技術(shù)
4.1 windows窗口和消息驅(qū)動(dòng)機(jī)制
4.1.1 窗口
4.1.2 窗口的消息驅(qū)動(dòng)機(jī)制
4.1.3 消息的組織和發(fā)送
4.1.4 visual basic事件與消息
4.2 子類技術(shù)及其常規(guī)實(shí)現(xiàn)
4.2.1 子類技術(shù)簡介
4.2.2 子類技術(shù)的常規(guī)實(shí)現(xiàn)
4.2.3 子類技術(shù)常規(guī)實(shí)現(xiàn)的問題
4.3 開發(fā)實(shí)現(xiàn)子類技術(shù)的通用模塊
4.3.1 通用模塊的目標(biāo)
4.3.2 封裝子類信息的類模塊
4.3.3 實(shí)現(xiàn)子類技術(shù)的標(biāo)準(zhǔn)模塊
4.3.4 子類技術(shù)通用模塊小結(jié)
4.4 子類技術(shù)通用模塊的用法舉例
4.4.1 標(biāo)準(zhǔn)模塊module1的設(shè)計(jì)
4.4.2 窗體form1的設(shè)計(jì)
4.4.3 程序的運(yùn)行效果
第5章 想解雇activex通用控件嗎—— 使用api函數(shù)創(chuàng)建控件
5.1 控件的深入理解
5.1.1 activex控件
5.1.2 dll通用控件庫
5.1.3 控件的運(yùn)行機(jī)制
5.1.4 簡單實(shí)例——用api函數(shù)創(chuàng)建animation控件
5.2 用api函數(shù)創(chuàng)建控件的模塊劃分
5.2.1 實(shí)現(xiàn)控件的類模塊
5.2.2 支持的標(biāo)準(zhǔn)模塊
5.2.3 其他“黑匣子”模塊
5.2.4 模塊劃分小結(jié)
5.3 mdlapicontrolssupport標(biāo)準(zhǔn)模塊
5.3.1 公有常量定義
5.3.2 控件類型的枚舉類型定義
5.3.3 管理已創(chuàng)建控件
5.3.4 子類處理的自定義窗口程序
5.3.5 標(biāo)準(zhǔn)模塊的其他內(nèi)容
5.4 clscontrolbase基類模塊
5.4.1 api函數(shù)聲明和常量、類型定義
5.4.2 創(chuàng)建控件
5.4.3 實(shí)現(xiàn)控件的共有屬性
5.4.4 實(shí)現(xiàn)控件的共有方法
5.4.5 類模塊的initialize和terminate事件過程
5.5 實(shí)現(xiàn)跳格表控件的控件類模塊clsapitabs
5.5.1 api函數(shù)聲明和常量、類型定義
5.5.2 繼承的“變通”實(shí)現(xiàn)
5.5.3 創(chuàng)建跳格表控件
5.5.4 實(shí)現(xiàn)跳格表控件的屬性
5.5.5 實(shí)現(xiàn)跳格表控件的方法
5.5.6 實(shí)現(xiàn)跳格表控件的事件
5.5.7 clsapitabs控件類模塊的應(yīng)用實(shí)例
5.6 實(shí)現(xiàn)狀態(tài)欄控件的控件類模塊clsapistabar
5.6.1 api函數(shù)聲明和常量、類型定義
5.6.2 繼承的“變通”實(shí)現(xiàn)
5.6.3 創(chuàng)建狀態(tài)欄控件
5.6.4 狀態(tài)欄分欄和分欄屬性
5.6.5 狀態(tài)欄的其他功能
5.6.6 實(shí)現(xiàn)狀態(tài)欄的事件
5.6.7 clsapistabar控件類模塊的應(yīng)用實(shí)例
5.7 實(shí)現(xiàn)豐富格式文本框控件的控件類模塊clsapirichtextbox
5.7.1 richtextbox控件加載和繼承的“變通”實(shí)現(xiàn)
5.7.2 創(chuàng)建richtextbox控件
5.7.3 管理文本和rtf代碼
5.7.4 選擇區(qū)域
5.7.5 文本的剪切、復(fù)制、粘貼
5.7.6 設(shè)置文本格式
5.7.7 實(shí)現(xiàn)richtextbox的事件
5.7.8 實(shí)現(xiàn)richtextbox的其他功能
5.7.9 clsapirichtextbox控件類模塊的應(yīng)用實(shí)例
第6章 路見不平一聲吼,強(qiáng)大功能我也有 ——常見vb系統(tǒng)功能問題和解決
6.1 長字符串處理
6.1.1 vb系統(tǒng)中的字符串連接運(yùn)算及問題
6.1.2 解決方案——clslongstring類模塊
6.1.3 改進(jìn)字符串連接效率測試
6.2 多種分行格式的純文本文件的按行讀取
6.2.1 vb按行讀取文本文件的常規(guī)方法及問題
6.2.2 二進(jìn)制讀取文本文件
6.2.3 設(shè)計(jì)類模塊支持多種分行格式
6.2.4 類模塊的使用
6.3 部分字符串函數(shù)的增強(qiáng)
6.3.1 split函數(shù)的增強(qiáng)
6.3.2 trim函數(shù)的增強(qiáng)
6.3.3 判斷collection對象的鍵是否存在
6.4 解決控件不支持鼠標(biāo)滾輪的問題
6.4.1 鼠標(biāo)滾輪消息wm_mousewheel
6.4.2 窗口滾動(dòng)消息wm_hscroll和wm_vscroll
6.4.3 解決鼠標(biāo)滾輪問題的通用模塊
6.5 增強(qiáng)vb的滾動(dòng)條控件
6.5.1 基本思路
6.5.2 實(shí)現(xiàn)技術(shù)
6.5.3 類模塊的完整代碼
6.5.4 增強(qiáng)滾動(dòng)條通用模塊使用舉例
第7章 讓你的程序在哪都不out——使程序支持多國語言版
7.1 多國語言支持的主要問題
7.2 字符串資源和資源加載
7.2.1 字符串資源
7.2.2 vb的資源編輯器
7.2.3 解決不同語言語法元素順序問題
7.3 編寫支持多國語言版程序的通用模塊
7.3.1 公有函數(shù)
7.3.2 條件編譯的全局元素
7.3.3 開發(fā)多國語言版的程序小結(jié)
7.4 支持多國語言版的程序?qū)嵗?br />7.4.1 簡單實(shí)例
7.4.2 改造clsreadlines類模塊
第二篇 功能模塊篇
第8章 程序骨感沒人愛——windows繪圖和圖形界面增強(qiáng)
8.1 gdi的基本原理
8.1.1 色彩和坐標(biāo)
8.1.2 設(shè)備環(huán)境簡介
8.1.3 gdi對象
8.2 高級文本描繪的類模塊clsdrawtext
8.2.1 drawtext函數(shù)
8.2.2 clsdrawtext類模塊的開發(fā)
8.2.3 clsdrawtext使用的實(shí)例程序
8.3 繪制windows圖形元素
8.3.1 繪制蝕刻線
8.3.2 繪制3d效果的邊框
8.3.3 繪制windows按鈕元素
8.3.4 繪制首尾移動(dòng)樣式的按鈕
8.4 繪制透明位圖
8.4.1 位圖簡介
8.4.2 光柵操作
8.4.3 繪制透明位圖
8.4.4 程序?qū)嵗?br />8.5 為靜態(tài)圖形添加圖形熱區(qū)
8.5.1 圖形熱區(qū)實(shí)現(xiàn)的基本思路
8.5.2 開發(fā)圖形熱區(qū)管理類模塊clsgraphcoords
8.5.3 圖形熱區(qū)編程實(shí)例
8.6 改變窗體透明度
8.6.1 設(shè)置窗體透明度的api函數(shù)
8.6.2 編寫類模塊封裝設(shè)置窗體透明度的api函數(shù)
8.6.3 程序?qū)嵗?br />8.7 使控件具有windows xp風(fēng)格的外觀
8.7.1 xp風(fēng)格外觀的控件探秘
8.7.2 使應(yīng)用程序中的控件具有xp風(fēng)格
8.7.3 程序?qū)嵗?br />第9章 搞定這個(gè)怕什么?你懂我的—— 菜單高級控制和菜單選擇助手
9.1 編寫菜單控制標(biāo)準(zhǔn)模塊mdlmenufuncs
9.1.1 菜單的句柄
9.1.2 獲取菜單項(xiàng)信息
9.1.3 設(shè)置菜單項(xiàng)信息
9.1.4 設(shè)置菜單項(xiàng)高亮狀態(tài)
9.1.5 返回或設(shè)置子菜單默認(rèn)項(xiàng)
9.1.6 獲得菜單中的菜單項(xiàng)總數(shù)
9.1.7 系統(tǒng)菜單控制
9.2 菜單選擇助手
9.2.1 基本思路
9.2.2 在mdlmenufuncs中添加的完整代碼
9.2.3 clsmenuselassist的完整代碼
9.3 程序?qū)嵗?br />9.3.1 菜單選擇助手功能演示
9.3.2 標(biāo)準(zhǔn)模塊mdlmenufuncs部分功能演示
第10章 玩轉(zhuǎn)注冊表,換湯不換藥——簡化ini文件和注冊表編程
10.1 ini文件和使用ini文件保存信息
10.1.1 ini文件的結(jié)構(gòu)
10.1.2 ini文件讀寫的主要api函數(shù)
10.1.3 封裝ini文件的讀寫操作
10.1.4 ini文件讀寫的實(shí)例程序
10.2 注冊表結(jié)構(gòu)簡介
10.2.1 控制項(xiàng)
10.2.2 子項(xiàng)
10.2.3 鍵值
10.3 編寫通用模塊封裝常用注冊表讀寫操作
10.3.1 項(xiàng)的句柄和項(xiàng)的打開、關(guān)閉
10.3.2 固定子項(xiàng)位置
10.3.3 創(chuàng)建或刪除子項(xiàng)
10.3.4 讀取子項(xiàng)鍵值
10.3.5 設(shè)置子項(xiàng)鍵值
10.3.6 刪除子項(xiàng)鍵值
10.3.7 讀取注冊表任意位置數(shù)據(jù)
10.3.8 設(shè)置文件關(guān)聯(lián)
10.4 注冊表編程實(shí)例
10.4.1 記憶窗體位置
10.4.2 在固定子項(xiàng)下讀寫數(shù)據(jù)
10.4.3 建立和刪除文件關(guān)聯(lián)
第11章 真的很給力——文件系統(tǒng)編程
11.1 文件系統(tǒng)操作
11.1.1 列文件目錄
11.1.2 判斷文件(夾)存在
11.1.3 文件名操作函數(shù)
11.1.4 創(chuàng)建文件夾
11.1.5 文件的復(fù)制、移動(dòng)和刪除
11.1.6 獲得驅(qū)動(dòng)器信息
11.1.7 獲得臨時(shí)文件
11.2 獲得文件屬性
11.2.1 文件名屬性
11.2.2 文件大小和文件屬性
11.2.3 文件時(shí)間屬性
11.2.4 文件屬性對話框
11.2.5 文件類型字符串和文件圖標(biāo)
11.3 打開/保存文件對話框的通用模塊
11.3.1 打開/保存文件對話框的相關(guān)api函數(shù)
11.3.2 編寫通用模塊
11.3.3 通用模塊使用實(shí)例
11.4 瀏覽文件夾對話框的通用模塊
11.4.1 瀏覽文件夾對話框的相關(guān)api函數(shù)
11.4.2 編寫通用模塊
11.4.3 通用模塊使用實(shí)例
11.5 制作自己的簡易資源管理器
第12章 非“程”勿擾——其他常見系統(tǒng)功能
12.1 運(yùn)行應(yīng)用程序
12.1.1 運(yùn)行程序或打開文檔
12.1.2 運(yùn)行程序并等待程序結(jié)束
12.1.3 程序?qū)嵗?br />12.2 監(jiān)視windows剪貼板
12.2.1 剪貼板查看器和查看器鏈
12.2.2 使vb程序具有剪貼板監(jiān)視功能的通用模塊
12.2.3 剪貼板監(jiān)視程序舉例
12.3 設(shè)置系統(tǒng)熱鍵
12.3.1 設(shè)置系統(tǒng)熱鍵的有關(guān)知識(shí)
12.3.2 實(shí)現(xiàn)系統(tǒng)熱鍵通用模塊的完整代碼
12.3.3 程序?qū)嵗?br />12.4 添加系統(tǒng)托盤圖標(biāo)
12.4.1 相關(guān)api函數(shù)
12.4.2 實(shí)現(xiàn)系統(tǒng)托盤圖標(biāo)通用模塊的完整代碼
12.4.3 程序?qū)嵗?br />第三篇 應(yīng)用模塊篇
第13章 我是勤奮的“豬”,我很乖——智能組合框
13.1 智能列表項(xiàng)維護(hù)
13.1.1 類模塊對象與組合框控件的關(guān)聯(lián)
13.1.2 不重復(fù)地添加列表項(xiàng)
13.1.3 列表項(xiàng)的保存和加載
13.2 實(shí)現(xiàn)按漢字拼音字頭的中文自動(dòng)輸入
13.2.1 實(shí)現(xiàn)原理
13.2.2 獲得漢字的拼音字頭
13.2.3 查找拼音字頭
13.2.4 實(shí)現(xiàn)按拼音字頭自動(dòng)輸入
13.2.5 自動(dòng)提示
13.3 智能組合框的其他功能
13.3.1 返回或設(shè)置下拉列表是否被拉下
13.3.2 設(shè)置下拉列表的高度
13.3.3 獲取或設(shè)置下拉列表的最小寬度
13.4 智能組合框應(yīng)用實(shí)例
第14章 “時(shí)”上編程——用api 函數(shù)實(shí)現(xiàn)定時(shí)器
14.1 用api函數(shù)創(chuàng)建定時(shí)器的通用模塊
14.1.1 定時(shí)器簡介
14.1.2 使用api函數(shù)創(chuàng)建定時(shí)器
14.1.3 定時(shí)器支持模塊mdltimersupport
14.1.4 定時(shí)器類模塊clstimer
14.2 定時(shí)器通用模塊應(yīng)用實(shí)例
14.2.1 類模塊內(nèi)的定時(shí)器使用
14.2.2 標(biāo)準(zhǔn)模塊內(nèi)的定時(shí)器使用
14.3 通過定時(shí)器變通實(shí)現(xiàn)多線程
第15章 誰說這事不能說太細(xì)——進(jìn)度指示
15.1 編寫長時(shí)間運(yùn)行程序需注意的主要問題
15.2 使程序在運(yùn)行途中響應(yīng)用戶按下【取消】按鈕
15.3 開發(fā)工作助手類模塊clsoperassistant
15.3.1 數(shù)據(jù)定義
15.3.2 更新進(jìn)度指示
15.3.3 顯示簡短提示文本
15.3.4 響應(yīng)用戶中途取消
15.3.5 出錯(cuò)提示
15.3.6 程序開始和結(jié)束
15.3.7 清除方法clear
15.3.8 類模塊的initialize和terminate事件過程
15.4 工作助手類模塊的應(yīng)用實(shí)例
15.5 開發(fā)指示進(jìn)度窗體
15.5.1 指示進(jìn)度窗體的運(yùn)行效果和調(diào)用
15.5.2 在工作助手類模塊中添加驅(qū)動(dòng)窗體的代碼
15.5.3 開發(fā)frmworkingavi窗體
第16章 邊界條約用戶定——實(shí)現(xiàn)運(yùn)行時(shí)控件的邊框調(diào)整
16.1 解決邊框調(diào)整問題的基本思路
16.1.1 通用模塊的使用
16.1.2 frame 控件的作用
16.1.3 控件大小位置的重新調(diào)整
16.1.4 上下型和左右型風(fēng)格
16.2 開發(fā)邊框調(diào)整的通用模塊
16.2.1 控件關(guān)聯(lián)
16.2.2 有關(guān)的數(shù)據(jù)定義
16.2.3 重新安排控件大小和位置
16.2.4 處理分隔線拖動(dòng)事件
16.2.5 類模塊的initialize和terminate事件過程
16.3 邊框調(diào)整通用模塊應(yīng)用實(shí)例
第17章 “泡泡”幾時(shí)有,自己編程瞅—— 自己編程實(shí)現(xiàn)氣泡提示框
17.1 制作氣泡型窗體
17.1.1 制作氣泡型窗體的基本思路
17.1.2 制作氣泡型窗體實(shí)例
17.2 氣泡提示框的通用模塊
17.2.1 窗體的界面設(shè)計(jì)
17.2.2 氣泡樣式和圖標(biāo)類型的枚舉類型
17.2.3 屬性和常量定義
17.2.4 顯示氣泡提示
17.2.5 指向控件的氣泡提示
17.2.6 氣泡提示的關(guān)閉
17.2.7 窗體的加載和卸載
17.3 氣泡提示框程序?qū)嵗?br />第18章 亂“式”英雄——具有高級功能的表達(dá)式計(jì)算
18.1 表達(dá)式計(jì)算的算法簡介
18.2 clscacuexp類模塊的數(shù)據(jù)定義
18.2.1 數(shù)據(jù)類型
18.2.2 表達(dá)式“解析”與表達(dá)式元素
18.2.3 表達(dá)式中的常量元素
18.2.4 表達(dá)式中的變量元素
18.2.5 運(yùn)算符和函數(shù)的常量定義
18.2.6 表達(dá)式字符串屬性
18.2.7 計(jì)算結(jié)果屬性
18.2.8 錯(cuò)誤信息屬性
18.3 clscacuexp類模塊的功能代碼
18.3.1 表達(dá)式解析
18.3.2 表達(dá)式計(jì)算
18.4 clscacuexp類模塊的使用實(shí)例
索引
參考文獻(xiàn)

章節(jié)摘錄

  3.3 哈希表  3.3.1 什么是哈希表  3.3.1.1 提出問題  在程序設(shè)計(jì)中,經(jīng)常需要維護(hù)一個(gè)列表,比如學(xué)生列表、貨品列表、窗體列表等。對這些列表最頻繁的一種操作是能夠通過給定的一個(gè)編號(hào)快速地找到項(xiàng)目。例如給定一個(gè)學(xué)生的學(xué)號(hào),就能快速找到該學(xué)生的數(shù)據(jù);給定一個(gè)窗體的編號(hào),就能快速定位到窗體以便對窗體進(jìn)一步操作(如將窗體顯示出來)等。也就是說這類列表中的每項(xiàng)數(shù)據(jù)是由兩部分組成的:一是可以惟一標(biāo)識(shí)本條數(shù)據(jù)的一個(gè)編號(hào),二是數(shù)據(jù)本身。我們把前者這種可以惟一標(biāo)識(shí)一條數(shù)據(jù)的編號(hào)稱為鍵,后者稱為數(shù)據(jù)或值。因此問題可以概括為:維護(hù)一個(gè)列表,給定一個(gè)鍵后,能快速地找到對應(yīng)的數(shù)據(jù)?! ∵@可以通過數(shù)組來實(shí)現(xiàn),比如把學(xué)生、貨品、窗體等信息存放到數(shù)組中,數(shù)組的下標(biāo)就是鍵,即把數(shù)據(jù)存儲(chǔ)到與編號(hào)相同下標(biāo)的空間中。如果給定了學(xué)號(hào)、貨品號(hào)、窗體編號(hào),就是給定了數(shù)組的下標(biāo),通過數(shù)組的下標(biāo)可以直接找到數(shù)組元素。然而,這里有一個(gè)問題是:  學(xué)號(hào)、貨品號(hào)、窗體編號(hào)等可能是一個(gè)很大的數(shù)字,例如學(xué)號(hào)可能是8位數(shù)字,那么定義的數(shù)組就至少應(yīng)該有108個(gè)元素,而實(shí)際學(xué)生人數(shù)遠(yuǎn)沒有108個(gè)。也就是說實(shí)際數(shù)據(jù)只占用了數(shù)組的很小一部分,在“數(shù)據(jù)結(jié)構(gòu)”中稱這個(gè)數(shù)組是稀疏的(sparse)。顯然采用上述這種數(shù)組的存儲(chǔ)方法將大量浪費(fèi)存儲(chǔ)空間?! B中有一種Collection對象也可以用于處理這類數(shù)據(jù),Collection對象中的每個(gè)元素可以有一個(gè)鍵和一個(gè)值。通過Item方法給定一個(gè)鍵作為參數(shù)就能快速地返回?cái)?shù)據(jù)。然而Collection對象的效率很低,處理少量數(shù)據(jù)尚可,當(dāng)處理的數(shù)據(jù)量很大時(shí),會(huì)嚴(yán)重影響程的效率,稍后還要討論這個(gè)問題?!  ?/pre>

編輯推薦

《老兵新傳:Visual Basic核心編程及通用模塊開發(fā)》面向Visual Basic編程和開發(fā)實(shí)踐,介紹實(shí)現(xiàn)軟件的實(shí)際功能,直擊編程實(shí)際問題,幫助程序員學(xué)習(xí)開發(fā)實(shí)踐知識(shí)!編程“高手”的功力體現(xiàn)在對語言的徹底掌握和豐富的實(shí)踐經(jīng)驗(yàn),書稿內(nèi)容由作者原創(chuàng)編寫,直接面向?qū)嶋H應(yīng)用?!独媳聜?Visual Basic核心編程及通用模塊開發(fā)》程序代碼凝聚了作者十余年的編程經(jīng)驗(yàn),書中所有通用模塊可不加修改直接調(diào)用。

圖書封面

圖書標(biāo)簽Tags

評論、評分、閱讀與下載


    老兵新傳 PDF格式下載


用戶評論 (總計(jì)3條)

 
 

  •   是核心,文字十分多,大大提高編程速度,實(shí)用,只是紙質(zhì)有點(diǎn)薄,但無影響
  •   好書,內(nèi)容很實(shí)用,對學(xué)習(xí)很有幫助
  •   非常值得購買的一本書,適合有一定VB基礎(chǔ)的人閱讀,不過后面有很多例子網(wǎng)上也可輕松搜索到
 

250萬本中文圖書簡介、評論、評分,PDF格式免費(fèi)下載。 第一圖書網(wǎng) 手機(jī)版

京ICP備13047387號(hào)-7