這個計劃因為工作將被擱置!
《WTL起步 - 玩轉圖形界面》 譯序
第一次使用C++是1993年。
當時我主要的工作是PC虛擬儀器開發,環境是DOS,因為要操作硬件以及運行效率的原因,除了匯編,使用最多的是C語言。我正需要開發一套仿真Windows圖形界面的函數庫,用C簡直是一場惡夢。好在在畢業后不久,因為當時導師在各處宣傳Borland的C++集成開發環境,我得以有機會學習并使用它。
為了免除海量代碼的折磨,邊學邊做地用C++做了一套框架,象極了當時對于我們PC286族只是作為玩具的Windows 3.1。我叫它W4D(Windows For Dos)?,F在翻箱倒柜也只找到了當時打印的代碼片斷,大概不到4000行代碼,在一疊已經泛黃的帶孔的打印紙上。
記憶中,我靠這套框架曾換取了好多次面試時的印象分。
后來的幾年中,我做得最多得是MIS,所以VB、Delphi和Power builder成了我的主業。特別喜歡Power builder的可視化繼承,覺得那才是真正的OOP (Object-Oriented Programming,面向對象的編程)的實現。
我特別不喜歡拷貝和粘貼,不喜歡將同樣的代碼寫兩次,所以我喜歡C++中的模板技術(Template)。這也是VB、Delphi和Power builder包括后來的Java所不能支持的。
我也不喜歡為了發布一個小小的應用程序,需要帶上一大堆的支持庫,所以我一直用C/C++寫一些小程序。但是由于開發圖形界面的復雜,大多為Console-Based程序。而這世上所有的C++版本的Windows應用開發框架中,以使用WTL(Windows Template Library)開發出的程序為最小。(當然,用Borland的Delphi、C++ Builder也可以開發出免支持庫的應用程序,但是這些工具實在是太昂貴了?。?o:p>
WTL是微軟的ATL小組中以Nenad Stefanovic為首的工程師們在為ATL開發窗口相關API的封裝類庫時開發的副產品。最早作為一個不包含官方支持服務的軟件包出現在2000年1月發表的微軟平臺軟件開發工具包(Platform SDK)中,當時是3.1版。目前最新的WTL7.0版可以從微軟的MSDN網站(http://msdn.microsoft.com)上免費下載。
喜歡WTL是因為它的小巧,不需要任何支持庫,編譯出的運行代碼是靜態編譯MFC程序的十分之一。
喜歡WTL是因為它的開放,所以的源代碼都盡在掌握。并且不似MFC那樣的龐大。
喜歡WTL是因為它的廉價,可以免費獲取,可以使用免費的標準C++編譯器編譯【注一】。
喜歡WTL是因為模板技術,WTL是目前唯一一種不但不排斥而且充分利用了模板技術的Windows應用開發框架(Windows Frameworks)。
……
也許,你會有更多的理由去喜歡它。但是學習WTL最大的苦惱莫過于沒有微軟官方的支持和少得可憐的學習資料。
我有幸從網上獲得這份白皮書的英文版《WTL Makes UI Programming a Joy》,并且得到始作俑者Nenad Stefanovic先生的許可來翻譯它的中文版。
在按照原文翻譯的同時,我增加了一些實踐的經驗總結嵌入在譯文中的【恒瑞譯注】中,并增加了一個附錄,為我使用Borland免費的C++編譯器來編譯WTL程序的經驗分享,以幫助讀者在輕松掌握這門技術的同時盡可能廉價地搭建開發環境。
原作分為Part1和Part2兩個文件,我在翻譯的同時整合為一個完整的文件。
本書分為兩個部分:基礎篇和提高篇。
在【基礎篇】中,作者從使用WTL的祖先ATL創建一個Windows應用程序開始逐步引入主題-WTL的使用。內容包括:
Ø 窗口和工具條的創建
Ø 各類視圖窗口使用
Ø 文檔列表的顯示和維護
Ø 開發單文檔(SDI)程序
Ø 開發象瀏覽器那樣的多重SDI程序
Ø 開發多文檔(MDI)程序
Ø 封裝圖形設備接口GDI
Ø Cstring仿真和其它MFC習慣仿真
在【提高篇】中,作者通過許多樣例程序片斷,引導讀者使用WTL技術開發最流行的Windows圖形界面要素。內容包括:
Ø 創建包含位圖的視圖
Ø 創建和使用上下文菜單(鼠標右鍵菜單)
Ø 創建可以卷滾的視圖
Ø 調用系統通用對話框
Ø 各種控件封裝類
Ø 打印和打印預覽
Ø 創建和使用屬性頁(Properties Sheets)
Ø 消息過濾和映射技術
Ø 閑置(Idle)時間處理
Ø 圖形界面更新
全書的風格統一,都是通過對一些樣例程序代碼片段來闡述實現機制。建議讀者一邊調試一邊閱讀。一方面是實踐幫助記憶,另一方面也能在調試過程中舉一反三,有一些小小的成就感,保持學習熱情。
畢竟這不是可視化編程的教程,寫代碼永遠沒有畫界面來得輕松。但是,樂趣和成就感還是代碼給予的比較多些。
最后,預祝大家閱讀愉快,調試愉快,使用WTL愉快!
這個計劃因為工作將被擱置!
【注一】 使用免費的Borland C++編譯器或GNU的C++編譯器可以編譯WTL程序。不過必須拷貝ATL庫以及作相應的修改。 |
原文轉自:http://www.anti-gravitydesign.com