知 莫大乎棄疑







【基本資料】

書名:Visual C++ 物件導向 MFC 程式設計 - 實作篇
出版:旗標 1995.04
ISBN:957-717-118-4
頁數: 8 章, 467 頁
定價:NT$ 450.0

本書已有新版,請參考 深入淺出 MFC 第二版


【自序】


距離基礎篇出版到現在,半年忽忽又過去了。整個世界又向前跑了好遠,然而唯一不變的是原理,唯一可以依恃的是基礎知識的奠立。

所以,雖然 Visual C++ 和 MFC 都相續出了新版,Borland C++ 和 OWL 也是,我卻依然對 application framework 的原理探討興緻盎然。當然,探討這些技術不能沒有一個載具,對朋友們沒什麼幫助的空談也非吾之所願。我繼續以 MFC 為對象,探索檔案讀寫 (Serialize)、訊息映射 (Message Mapping)、訊息遞送(Message Routing)、列印與預視等內部動作。就佔有不少篇幅的這一部份而言,本書簡直可稱為是 "MFC Internals"。噢,別被這名稱嚇到了,所有的內容都是循序漸近的。深入 (甚至深及見骨 -- MFC 原始碼) 的討論,並不純然是為技術而技術,是因為我認為了解這些東西對於你的技術累積有絕對的幫助。至少我自己看我自己,是這麼過來的。

本書所牽涉到的 MFC 內部,是為了幫助你了解背後運作的原理而提出來的,不是為了要你把它背下來,或是要拿來怎麼用。即使在版本有所更替,原始碼有所改變的情況下,這些 MFC 內部運作原理的解釋,並不會改變它的價值。

本書 (實用篇) 以一個五階段的程式為進行主軸。我偷了一個懶,以 MFC 的 Scribble 程式為範例。感謝 Microsoft 公司允許我使用這個程式。之所以選擇它,是因為五個階段把 MFC 提供的最重要的程式特質以漸進的方式一一加入 --- 非常合乎教育構想。這些檔案都可以從 VC++ 套件中獲得,但我還是把它們都準備好,製作成可執行檔,改用不同的程式圖樣,放在磁片中給你。除了 Scribble,第六章和第七章的技術另外以三個程式示範之。

Visual C++ 的「官方手冊」Class Library User's Guide 也是以 Scribble 程式為例,解說 MFC 的運用 (該手冊在 Visual C++ 1.5 光碟片的 Books Online 中有,你也可以另購印刷品)。到底本書與該手冊有什麼差異 ? 光是「中文容易閱讀吸收」這樣的目的,並不足以讓我去做重複性高而意義不大的工作。我最主要花下的心血是,藉著這個好例子,深入解釋什麼是 Document,什麼是 View,並且深入介紹訊息映射和訊息傳遞送,同時也加了 VBX 的使用實例。即使你曾經看過該原文手冊,我想你一定還可以從本書獲得更深入更有價值、更多並且更圓滿的技術解釋;而如果你不曾看過該手冊,當然我希望此書的出現使你完全不必再去依賴那些蟹形文 -- 對於此點我是滿有信心的。

本書的絕大部份,其實與上冊 (基礎篇) 差不多同時完成,但一來製作上有個先後,二來苦於其它事情的忙碌,三來對某些技術的緝根究底窮追猛打又耗掉了不少意外的時間,所以收尾的動作就延遲了。旗標出版公司業務部門屢屢為熱心讀者的詢問電話所苦。面對讀者之殷殷垂詢,我深深為本書之遲遲面世感到抱歉,抱歉於承諾沒有及時完成。不過,雖然時間上的承諾沒有達成,品質上的承諾我是永遠不敢輕怠的。

迴響顯示,非常多的朋友喜歡深入的剖析方式,這與我的想像吻合,一直認為,能夠一躍而上物件導向高台的人不會太多,每個人都希望儘量在既有的基礎上學習新事物,一步一步來。

很快地,全面 32 位元的時代就要來臨了,包括 32 位元作業系統、32 位元程式開發工具、32 位元商業軟體。Visual C++ 已經推出了它的 32 位元版本 : VC++ 2.0 (搭配 MFC 3.0)。我把本書所有的程式在 VC++ 2.0 中重新製作過,除了 VBX 這個主題擱淺之外 (VBX 不適用於 32 位元環境),其他一帆風順。第八章有我對移植過程的一些介紹,以及它們在 Windows 95 (beta) 的執行情況。對於 32 位元環境感到憂慮的朋友,MFC 可以解除你的憂慮。

序,到底該寫些什麼 ? 辭典上說,序是「排列在書的卷首,敘述全書概要的文章」,可是稍後我還有一個「本書架構」,有些文字是不是該放到那兒去 ? 噢,我也不知道。反正,我以和朋友說話的心情,在書籍定稿之後的愉快情緒暈染之下寫序。而且,有人告訴我,滿喜歡看我寫的序。也有人說我的書裡最好看的就是序,這我就不知道應該高興還是悲傷了。

侯俊傑 新竹 1995.03.23

 

【目錄】

第零章 你一定要知道
第一章 Document-View 深入討論
第二章 訊息遞送與 UI 物件
第三章 對話盒與 DDX/DDV
第四章 加強 View 的功能與重繪效率
第五章 印表與預視
第六章 在 MFC 程式中使用 VBXs
第七章 一體多面 - Multiple Views 的各種變化技巧
第八章 32 位元 MFC 程式設計
附錄 A 參考資料
附錄 B MFC 技術前提 - C++ 繼承性質與虛擬函式之使用
附錄 C Message Map 列表
附錄 D Scribble 程式原始碼列表

f318.jpg (18138 bytes)