開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服
首頁
好書
留言交流
下載APP
聯(lián)系客服
2005.10.09
我一直在尋找這樣一個(gè)類庫:他對(duì)Windows的窗口提供面向?qū)ο蟮姆庋b,有靈活的消息響應(yīng)機(jī)制和比較完備的界面框架解決方案,對(duì)標(biāo)準(zhǔn)控件提供簡(jiǎn)練實(shí)用的封裝,支持操作系統(tǒng)的新特性,支持功能擴(kuò)充和二次開發(fā),有代碼自動(dòng)生成向?qū)C(jī)制,生成的程序使用較少的系統(tǒng)資源,最后是有完全的代碼支持和文檔支持。 你會(huì)說那就用MFC吧! 是的,我一直使用MFC,但我對(duì)MFC已經(jīng)越來越厭倦了。陳舊的類庫使得它無法支持操作系統(tǒng)的新特性(MFC的類庫從4.21版之后就沒有更新了,而那時(shí)是1998年,人們使用Windows 95和windows NT4),臃腫的消息映射機(jī)制和為了兼容性而保留下來的代碼使得程序效率低下,面面俱到的框架結(jié)構(gòu)使得生成的應(yīng)用程序龐大并占用過多的系統(tǒng)資源。當(dāng)一個(gè)功能簡(jiǎn)單的程序使用動(dòng)態(tài)鏈接也超過200K,占用3%-4%的系統(tǒng)資源時(shí),我決定放棄MFC,尋找一個(gè)新的功能類似的類庫。我研究過很多類似的代碼,不是過于簡(jiǎn)單,無法用于應(yīng)用程序的開發(fā)就是缺乏代碼和文檔的支持。在CodeProject上有一個(gè)名為Class的類庫,我也研究過它的代碼,具備了基本的界面框架,對(duì)控件也有了簡(jiǎn)單的封裝,但是不實(shí)用,龐大的虛函數(shù)機(jī)制使得對(duì)象非常臃腫,無法減少對(duì)資源的占用。我甚至仿照MFC做了一個(gè)簡(jiǎn)單的類庫miniGUI,形成了基本的框架解決方案,但是最后放棄了,原因很簡(jiǎn)單:無法用于應(yīng)用程序的開發(fā)。一個(gè)應(yīng)用程序界面框架錯(cuò)綜復(fù)雜,要考慮的事情太多,開發(fā)者不可能在應(yīng)用程序和界面框架兩線作戰(zhàn)。就在我即將絕望的時(shí)候,我遇到了WTL。 由于工作的需要經(jīng)常開發(fā)一些COM組件,在要求不能使用MFC的場(chǎng)合就是用ATL。ATL提供了對(duì)窗口的面向?qū)ο蟮胤庋b和簡(jiǎn)單的消息映射機(jī)制,但是ATL過于簡(jiǎn)單,用它開發(fā)應(yīng)用程序幾乎不可能。要想讓ATL具備界面框架解決方案的功能還需要做很多事情,幸運(yùn)的是WTL就做了這些事情。WTL是個(gè)很奇特的東西,它由微軟公司一群熱情的程序員維護(hù),它從未出現(xiàn)在微軟的官方產(chǎn)品名單上,但可以從微軟的官方網(wǎng)站下載最新的WTL。它沒有正式的文檔支持,用WTL做關(guān)鍵字在MSDN中檢索只能得到0個(gè)結(jié)果,但是全世界的開發(fā)網(wǎng)站上都有針對(duì)WTL的討論組和郵件列表,任何問題都會(huì)得到熱情的解答。我認(rèn)真地對(duì)比了MFC和WTL,發(fā)現(xiàn)二者有很多相通之處,MFC的功能幾乎都能在WTL中實(shí)現(xiàn),只是方法不同而已。我?guī)缀醪毁M(fèi)吹灰之力就將以前寫的一個(gè)MFC程序用WTL改寫了,使用靜態(tài)鏈接的WTL程序比使用動(dòng)態(tài)鏈接的MFC程序還要小,資源占用只有MFC程序的一半。 但是一時(shí)的熱情不能解決文檔缺乏的困擾,雖然網(wǎng)上有很多使用WTL的例子和說明文章,幾乎把MFC能實(shí)現(xiàn)的各種稀奇古怪的效果都實(shí)現(xiàn)了,但都是叛塾誥植課侍獾媒餼觶狽ο低車厝嫻亟檣躓TL的文章。就在這個(gè)時(shí)候我看到了邁克爾.敦(Michael Dunn)的“WTL for MFC Programmers”系列文章,我的感覺和1995年我第一次見到MSDN時(shí)一樣,幾乎是迫不及待地將其讀完,同時(shí)也萌發(fā)了將其翻譯成漢語的沖動(dòng)。于是給Michael寫了封郵件,希望能夠得到授權(quán)將他的文章翻譯成漢語(事實(shí)上在這之前我已經(jīng)翻譯了兩章了)。在得到授權(quán)確認(rèn)后才發(fā)現(xiàn)這個(gè)工作是多么的困難,但為時(shí)已晚,只能硬著頭皮撐下去。 現(xiàn)在介紹一下邁克爾.敦這個(gè)人。邁克(Mike)住在陽光燦爛的洛杉磯,深受那里天氣的寵愛使他愿意一直住在那里。他在4年級(jí)時(shí)就開始在Apple //e上編程序,1995年從UCLA (加利福尼亞大學(xué)洛杉磯分校)畢業(yè),獲得數(shù)學(xué)學(xué)士學(xué)位。畢業(yè)后加盟賽門鐵克(Symantec)公司,成為Norton AntiVirus小組的質(zhì)量評(píng)價(jià)工程師。他幾乎是自學(xué)了Windows和MFC編程,1999年他為Norton AntiVirus 2000設(shè)計(jì)并編寫了新的界面。邁克現(xiàn)在是pressplay(不久成為Napster) 的開發(fā)人員。他最近開發(fā)了一個(gè)IE的工具條插件UltraBar ,可以輕松實(shí)現(xiàn)繁瑣的網(wǎng)絡(luò)搜索功能。他還和別人合作創(chuàng)辦了一家軟件開發(fā)公司:Zabersoft ,該公司在洛杉磯和歐登賽(丹麥)都設(shè)有辦事處。邁克喜歡玩彈球和騎自行車,偶爾也玩一下PlayStation,他還一直堅(jiān)持學(xué)習(xí)法語,官方漢語和日語。 另外需要說明得是我翻譯“WTL for MFC Programmers”系列文章不是為了獲得任何利益,只是想為大家提供一些新的思路。如果你是MFC的堅(jiān)定捍衛(wèi)者,看到這里你就可以停下來了,再看下去是浪費(fèi)你的時(shí)間(希望你看了前面幾段文字還能挺住不要嘔吐)。如果你是個(gè)對(duì)另類事物充滿熱情的程序員,你不能不研究WTL,它真的是一座寶藏最后用我的朋友對(duì)我的翻譯文章的評(píng)價(jià)來結(jié)束“WTL for MFC Programmers”中文版的序言:翻譯水平和你用的鼠標(biāo)一樣爛!
微信登錄中...請(qǐng)勿關(guān)閉此頁面