本書不論繁體版或簡體版,都創下相當記錄。
然而自 2001 年起,由於松崗圖書公司的變化,不復再有新刷。
我已開放繁體版 PDF電子書

繁體二版共11刷,9300+780 冊
繁體一版共02刷,2500+200 冊

《深入淺出 MFC》2/e
  繁體中文版

侯俊傑 著

u002p.jpg (14505 bytes)

繁體版 勘誤

frame1-frame8 程式源碼下載

答客問

完整電子書開放


【基本資料】

書名:深入淺出 MFC 第二版
出版:松崗 1997.05
ISBN:957-22-2518-9
頁數: 16 章,942 頁
定價:NT$ 860.0

【自序】

山高月小 水落石出

二版序

任何人看到本書的讀者來函,都會感動於一本電腦書籍的讀者與作者竟然能夠產生如此深厚的共鳴,以及似無若有的長期情感。

何況,身為這本書的作者的我!

我寫的是一本技術書籍,但是贏得未曾謀面的朋友們的信賴與感情。我知道,那是因為這本書裡面也有許多我自己的感情。每當收到讀友們針對這本書寄來的信件(紙張的或電子的),我總是懷著感恩的心情仔細閱讀。好幾位讀友,針對書中的可疑處或是可以更好的地方,不吝嗇地撥出時間,寫滿一大張一大張的信紙,一一向我指正。我們談的不只是技術,還包括用詞遣字的意境。新竹劉嘉均先生和加拿大陳宗泰先生給我非常寶貴的技術上的意見。陳先生甚至在一個月內來了五封航空信。

這些,怎不教我心懷感謝,並且更加戒慎恐懼!

感謝所有讀者促成這本書的更精緻化。Visual C++ 5.0 面世了,MFC 則停留在4.2,程式設計的主軸沒有什麼大改變。對於新讀者,本書乃全新產品自不待言,您可以從目錄中細細琢磨所有的主題。對於老讀者,本書所帶給您的,是更精緻的製作,以及數章新增的內容(請看第0章「與前版本之差異」)。

最後,我要說,我知道,這本書真的帶給許多人很紮實的東西。而我所以願意不計代價去做些不求近利的深耕工作,除了這是身為專業作家的責任,以及個人的興趣之外,是的,我自己是工程師,我最清楚工程師在學習 MFC 時想知道什麼、在哪裡觸礁。

所有出自我筆下的東西,我自己受益最豐。

感謝你們。

侯俊傑 臺灣.新竹 1997.04.15

 

第一版序

有一種軟體名曰 version control,用來記錄程式開發過程中的各種版本,以應不時之需,可以隨時反省、檢查、回覆過去努力的軌跡。

遺憾的是人的大腦沒有 version control 的能力。學習過程的徬徨猶豫、挫折困頓、在日積月累的漸悟或剎那之間的頓悟之後,彷彿都成了遙遠模糊的回憶;而屢起屢仆、大惑不解的地方,學成之後看起來則是那麼「理所當然」。

學習過往的艱辛,模糊而明亮,是學成冠冕上閃亮的寶石。過程愈艱辛,寶石愈璀璨。作為私人「想當年」的絕佳話題可矣,對於後學則無甚幫助。的確,誰會在一再跌倒的地方做上記號,永誌不忘?誰會把推敲再三的心得殷實詳盡地記錄下來,為後學鋪一條紅地毯?也許,沒有 version control 正是人類的本能,空出更多的腦力心力與精力,追求更新的事物。

但是,作為資訊教育體系一員的我,不能不有 version control。事實上我亦從來沒有忘記初學 MFC 的痛苦:C++ 語言本身的技術問題是其一,MFC 龐大類別庫的命名規則是其二,熟知的 Windows 程式基本動作統統不見了是其三,物件導向的觀念與 application framework 的包裝是其四。初學 MFC programming 時,我的腦袋猶如網目過大的篩子,什麼東西都留不住;各個類別及其代表意義,過眼即忘。

初初接觸 MFC 時,我對 Windows 作業系統以及 SDK 程式設計技術的掌握,實已處在眾人金字塔的頂端,困頓猶復如斯。實在是因為,對傳統程式員而言,application framework 和 MFC 的運作機制太讓人陌生了。

目前市面上有不少講解 MFC 程式設計觀念的書籍,其中不乏很好的作品,包括 Programming Windows 95 with MFC(Jeff Prosise 著,Microsoft Press 出版),以及我曾經翻譯過的 Inside Visual C++ 4.0(David J.Kruglinski 著,Microsoft Press 出版)。深入淺出 MFC的宗旨與以上二書,以及全世界所有的 MFC 或 Visual C++ 書籍,都不相同。全世界 (呵,我的確敢這麼說)所有與 MFC 相關的書籍的重點,都放在如何使用各式各樣的 MFC 類別上,並供應各式各樣的應用實例,我卻意不在此。我希望提供的是對 MFC 應用程式基本架構的每一個技術環節的深入探討,其中牽扯到 MFC 本身的設計原理、物件導向的觀念、以及 C++ 語言的高級議題。有了基礎面的全盤掌握,各個 MFC 類別之使用對我們而言只不過是手冊查閱的功夫罷了。

本書書名已經自我說明了,這是一本既深又淺的書。深與淺是悖離的兩條射線,理不應同時存在。然而,沒有深入如何淺出?不入虎穴焉得虎子?

唯有把 MFC 骨幹程式的每一個基礎動作弄懂,甚至觀察其原始碼,才能實實在在掌握 MFC 這一套 application framework 的內涵,及其物件導向的精神。我向來服膺一句名言:原始碼說明一切,所以,我挖 MFC 原始碼給你看。

這是我所謂的深入。

唯有掌握住 MFC 的內涵,對於各式各樣的 MFC 應用才能夠如履平地,面對龐大的 application framework 也才能夠胸中自有丘壑。

這是我所謂的淺出。

本書分為四大篇。第一篇提出學習 MFC 程式設計之前的必要基礎,包括 Windows 程式的基本觀念以及 C++ 的高階議題。「學前基礎」是相當主觀的認定,不過,基於我個人的學習經驗以及教學經驗,我的挑選應該頗具說服力。第二篇介紹 Visual C++ 整合環境開發工具。本篇只不過是提綱挈領而已,並不企圖取代 Visual C++ 使用手冊。然而對於軟體使用的老手,此篇或已足以讓您掌握Visual C++ 整合環境。工具的使用雖然談不上學問,但在視覺化軟體開發過程中扮演極重角色,切莫小覷它。

第三篇介紹 application framework 的觀念,以及 MFC 骨幹程式。所謂骨幹程式,是指 Visual C++ 的工具 AppWizard 所產生出來的程式碼。當然,AppWizard 會根據你的選項做出不同的程式碼,我所據以解說的,是大眾化選項下的產品。

第四篇以微軟公司附於 Visual C++ 光碟片上的一個範例程式 Scribble 為主軸,一步一步加上新的功能。並在其間深入介紹 Runtime Type Information(RTTI)、Dynamic Creation、Persistence(Serialization)、Message Mapping、Command Routing 等核心技術。這些技術正是其他書籍最缺乏的部份。此篇之最後數章則脫離 Scribble 程式,另成一格。

本書前身,1994/08 出版的 Visual C++ 物件導向MFC程式設計 基礎篇以及 1995/04 年出版的應用篇,序言之中我曾經這麼說,全世界沒有任何書籍文章,能夠把 MFC 談得這麼深,又表現得這麼淺。這些話已有一半成為昨日黃花:Microsoft Systems Journal 1995/07的一篇由Paul Dilascia 所撰的文章Meandering Through the Maze of MFC Message and Command Routing,以及 Addison Wesley於1996/06出版的 MFC Internals 一書,也有了相當程度的核心涉獵,即連前面提及的Programming Windows 95 with MFC 以及Inside Visual C++ 4.0 兩本書,也都多多少少開始涉及MFC核心。我有一種「德不孤 必有鄰」的喜悅。

為了維護本書更多的唯一性,也由於我自己又鑽研獲得了新的心得,本書增加了前版未有的Runtime Type Information、Dynamic Creation等主題,對於Message Mapping與Command Routing的討論也更詳細得多,填補了上一版的縫隙。更值得一提的是, 我把這些在 MFC 中極神秘而又極重要的機制,以簡化到不能再簡化的方式,在 DOS 程式中模擬出來,並且補充一章專論 C++ 的高階技術。至此,整個 MFC 的基礎架構已經完全曝露在你的掌握之中,再沒有任何神秘咒語了。

本書從 MFC 的運用,鑽入 MFC 的內部運作,進而 application framework 的原理,再至物件導向的精神,然後回到 MFC 的運用。這會是一條迢迢遠路嗎?

似遠實近!

許多朋友曾經與我討論過,對於 MFC 這類 application framework,應該挖掘其內部機制到什麼程度?探究原始碼,豈不有違「黑盒子」初衷?但是,沒有辦法,他們也同意,不把那些奇奇怪怪的巨集和指令搞清楚,只能生產出玩具來。對付 MFC 內部機制,態度不必像對付 MFC classes 一樣;你只需好好走過那麼一回,有個印象,足矣。至於龐大繁複的整個application framework 技術的鋪陳串接,不必人人都痛苦一次,我做這麼一次也就夠了。

林語堂先生在 朱門 一書中說過的一句話,適足作為我寫作本書的心境,同時也對我與朋友之間的討論做個總結:

只用一樣東西,不明白它的道理,實在不高明」。

祝各位 胸中丘壑自成!

    侯俊傑  新竹 1996.08.15

P.S. 愈來愈多的朋友在網路上與我打招呼,閒聊談心。有醫師、盲生、北京的作家、香港的讀者、從國中到研究所的各級學生。學生的科系範圍廣到令我驚訝,年齡的範圍也大到令我驚訝。對於深居簡出的作家而言,讀者群只是一個想像空間,哦,我真有這麼多讀者嗎?! 呵呵,喜歡這種感覺。回信雖然是一種壓力,不過這是個甜蜜的負擔。

你們常常感謝我帶給你們幫助。你們一定不知道,沒有你們細心研讀我的心血,並且熱心寫信給我,我無法忍受寫作的漫漫孤寂!我可以花三天的時間寫一篇序,也可以花一個上午設計一張圖。是的,我願意!我對擁有一群可愛可敬的讀者感到驕傲。

 

深入淺出MFC 二版五刷感言

我很開心地獲知,深入淺出 MFC 第二版即將進行第五刷。如果把第一版算進去,那就累積印製 9150 本了(不含簡體版)。也就是說,這本書擁有幾近一萬人(次)的讀者群(不含簡體版讀者)。

對一本如此高階又如此高價的技術書籍而言,誠不易也。我有許多感觸!

先從技術面談起。我閱讀過的 VC++ 或 MFC 書籍不算少,因此,我很有信心地說,這本書的內容有其獨步全球之處。本書企圖引領讀者進入 MFC 這個十分龐大並在軟體工具市場上極端重要之 application framework 的核心;我嘗試剖析其中美好的物件導向性質(註1)的實作方式,亦嘗試剖析其中與Windows 程式設計模型(註2)息息相關之特殊性質(註3)的實作方式。

註1:此指 runtime type information、dynamic creation、persistence、document/view…。

註2:此指 message based、event driven 之 programming model。

註3:此指 message mapping、command routing …。

在技術層次上,唯 MFC Internals 堪與本書比擬(本書附錄A附有 MFC Internals 簡介)。

但是 MFC InternalsDissecting MFC(本書之英文名稱)不僅在內容上各擅勝場,在訴求上亦截然不同。這本書並不是為精通 MFC programming 的老手而寫(雖然它通常亦帶給這樣的讀者不少幫助),而是為初窺 MFC programming 的新手所寫。MFC Internals 可以說是為技術而技術,探討深入,取材範圍極廣;Dissecting MFC 卻是為生活而技術,探討深入,但謹守主軸份際。所有我所鋪陳的核心層面的知識,都是為了建立起一份紮紮實實的programming 基礎,讓你徹底瞭解 MFC 為你鋪陳的骨幹背後,隱藏了多少巧妙機關,做掉了多少煩瑣事務。

有了這份基礎,你才有輕鬆駕馭 MFC 的本錢。

唯有這份基礎,才能使你胸中自有丘壑。

如果夠用心,你還可以附帶地從本書概略學習到一個 application framework 的設計藍圖。雖然,99.99999% 的programmer 終其一生不會設計一個 application framework,這樣的藍圖仍可以為你的物件導向觀念帶來許多面向的幫助。

我一直希望,能夠為此書發行英文國際版。囿於個人的語文能力以及時間,終未能行。但是看到來自世界各地的華人讀者的信函(加拿大、紐西蘭、越南、印尼、香港、中國大陸、美國...),也是另一種安慰。在BBS 及Internet News看到各界對此書的評介,以及對此書內容的探討,亦讓我感到十分欣喜。 

這本書(第二版)所使用的開發環境是 Visual C++ 5.0 & MFC 4.21。就在第五刷即將印行的今天,Visual C++ 6.0 也已問世;其中的 programming 關鍵,也就是 MFC,在主幹上沒有什麼變化,因此我不打算為了 Visual C++ 6.0 而改版

在此新刷中,我繼續修正了一些筆誤,並加上新的讀者來函。

未來,本書第三版,你會看到很大的變化。

侯俊傑 臺灣.新竹 1998.09.11

 

【導讀】

你一定要知道(導讀)

 

這本書適合誰

深入淺出MFC是一本介紹 MFCMicrosoft Foundation Classes)程式設計技術的書籍。對於 Windows 應用軟體的開發感到興趣,並欲使用 Visual C++ 整合環境的視覺開發工具,以 MFC 為程式基礎的人,都可以從此書獲得最根本最重要的知識與實例。

如果你是一位對 Application Framework 和物件導向(Object Oriented)觀念感興趣的技術狂熱份子,想知道神秘的 Runtime Type InformationDynamic CreationPersistenceMessage Mapping 以及 Command Routing 如何實作,本書能夠充分滿足你。事實上,依我之見,這些核心技術與徹底學會操控 MFC 乃同一件事情。

全書分為四篇:

第一篇【勿在浮砂築高台】提供進入MFC核心技術以及應用技術之前的所有技術基礎,包括:

第二篇【欲善工事先利其器】提供給對 Visual C++ 整合環境全然陌生的朋友一個導引。這一篇當然不能取代 Visual C++ User's Guide 的地位,但對整個軟體開發環境有全盤以及概觀性的介紹,可以讓初學者迅速了解手上掌握的工具,以及它們的主要功能。

第三篇【淺出 MFC 程式設計】介紹一個 MFC 程式的生死因果。已經有 MFC 程式經驗的朋友,不見得不會對本篇感到驚豔。根據我的了解,太多人使用 MFC 是「只知道這麼做,不知道為什麼」;本篇詳細解釋 MFC 程式之來龍去脈,為初入 MFC 領域的讀者奠定紮實的基礎。說不定本篇會讓你有醍醐灌頂之感。

第四篇【深入 MFC 程式設計】介紹各式各樣 MFC 技術。「只知其然 不知其所以然」的不良副作用,在程式設計的企圖進一步開展之後,愈來愈嚴重,最終會行不得也!那些最困擾我們的 MFC 巨集、MFC 常數定義,不得一窺堂奧的 MFC 黑箱作業,在本篇陸續曝光。本篇將使您高喊:Eureka

範例程式方面,第三章有數個 Console 程式(DOS-like 程式,在 Windows 系統的DOS Box 中執行),模擬並簡化 Application Framework 六大核心技術。另外,全書以一個循序漸進的 Scribble 程式(Visual C++ 所附範例),從第七章開始,分章探討每一個 MFC 應用技術主題。第13章另有三個程式,示範 Multi-View Multi-Document 的情況。14~16章是第二版新增內容,主題分別是 MFC 多緒程式設計、Custom AppWizard、以及如何使用 Component Gallery提供的 ActiveX controls components

你需要什麼技術基礎

從什麼技術層面切入 Windows 軟體開發領域?C/SDK?抑或 C++/MFC?這一直是個引起爭議的論題。就我個人觀點,C++/MFC程式設計必須跨越四大技術障礙:

  1. 物件導向觀念與 C++ 語言。
  2. Windows 程式基本觀念(程式進入點、訊息流動、視窗函式、callback...)。
  3. Microsoft Foundation Classes(MFC)本身。
  4. Visual C++ 整合環境與各種開發工具(難度不高,但需熟練)。

換言之,如果你從未接觸 C++,千萬不要閱讀本書,那只會打擊你學習新技術的信心而已。如果已接觸過 C++ 但不十分熟悉,你可以一邊複習 C++ 一邊學習 MFC,這也是我所鼓勵的方式(很多人是為了使用 MFC 而去學習 C++ 的)。C++ 語言的繼承(inheritance)特性對於我們使用 MFC 尤為重要,因為使用 MFC 就是要繼承各個類別並為己用。所以,你應該對 C++ 的繼承特質(以及虛擬函式,當然)多加體會。我在第2章安排了一些 C++ 的必要基礎。我所挑選的題目都是本書會用到的技術,而其深度你不見得能夠在一般C++ 書籍中發現。

如果你有 C++ 語言基礎,但從未接觸過Win16 Win32程式設計,只在DOS環境下開發過軟體,我在第1章為你安排了一些 Win32 程式設計基礎。這個基礎至為重要,只會在各個 Wizards 上按來按去,卻不懂所謂 message loop window procedure 的人,不可能搞定 Windows 程式設計 -- 不管你用的是 MFC OWL Open Class Library,不管你用的是 Visual C++ Borland C++ VisualAge C++

你需要什麼軟硬體環境

一套Windows 95(或 Windows NT)作業系統當然是必須的,中英文皆可。此外,你需要一套 Visual C++ 32 位元版。目前的最新版本是 Visual C++ 5.0,也是我使用的版本。

硬體方面,只要能跑上述兩種作業系統就算過關。記憶體(RAM)是影響運作速度的主因,多多益善。廠商宣稱 16MB RAM 是一個能夠使你工作舒適的數字,但我因此懷疑「舒適」這個字眼的定義。寫作本書時我的軟硬體環境是:

與前版本之差異

深入淺出MFC 第二版與前一版本之重大差異在於:

  1. 軟體工具由 Visual C++ 4.0 改為 Visual C++ 5.0,影響所及,第4章「Visual C++ - 整合性軟體開發環境」之內容改變極大。全書之中有關於MFC 內部動作邏輯及其原始碼的變動不多,因為Visual C++ 5.0中的 MFC 版本還維持在4.2。
  2. 第1章增加 Console 程式設計,以及Win32 多緒程式實例 Mltithrd。
  3. 第2章增加「四種不同的物件生存方式」一節。
  4. 第3章去除原有之Frame5 程式(該程式以 MFC 2.5 的技術模擬 Dynamic Creation)。
  5. 第4章全部改為 Visual C++ 5.0 使用畫面,並在最後增加一節「Console 程式的專案管理」。
  6. 第6章增加「奇怪的視窗類別名稱 Afx:x:y:z:w」一節,以及增加 Hello 程式對 idle time 的處理。
  7. 增加 14~16 三章。
  8. 附錄A增加 <無責任書評/侯捷先生> 的「MFC 四大天王」一文。
  9. 附錄D由原先之「OWL 程式設計一覽」,改為「以 MFC 重建 DBWIN」。

 

【目錄】

目錄

第0章 你一定要知道(導讀) / 27

第1章 Win32 程式基本觀念 / 003

第2章 C++ 的重要性質 / 055

第3章 MFC 六大關鍵技術之模擬 / 109

第4章 Visual C++ - 整合性軟體開發環境 / 219

第5章 總觀 Application Framework / 311

第6章 MFC 程式設計導論 - MFC 程式的生死因果 / 343

第7章 簡單而完整:MFC 骨幹程式 / 411

第8章 Document-View 深入探討 / 455

第9章 訊息映射與命令繞行 / 547

10 MFC與對話盒 / 601

11 View功能之加強與重繪效率之提昇 / 627

12 印表與預覽 / 659

13 多重文件與多重顯示 / 701

14 MFC 多緒程式設計(Multi-threaded Programming in MFC/ 745

15 定製一個AppWizard / 771

16 站上眾人的肩膀 - 使用 Components ActiveX Controls / 791

附錄A 無責任書評:從搖籃到墳墓 - Windows 的完全學習
          無責任書評:
MFC四大天王 / 856

附錄B Scribble Step5 程式原始碼列表 / 873

附錄C Visual C++ 5.0 MFC範例程式總覽 / 915

附錄D MFC 重建 Debug WindowDBWIN/ 921

 

【讀者來函】

1996年11月,我在書店看到了 深入淺出MFC 這本書,讓我想起自己曾經暗暗告訴過自己:Application Framework 真是一個好東西。我在書店駐足察看這本書五分鐘之後,我便知道這本書是一定要買下的。適巧我工作上的專案進度也到了一個即將完成的階度,所以我便一口氣將這本書給讀完了,而且是徹徹底底讀了兩遍。

我個人特別喜歡第3章:MFC 六大關鍵技術之模擬。這章內容的設計的確在 MFC 叢林中,大刀闊斧地披露出最重要的筋絡,我相信這正是所有學習 MFC 的人所需要的一種表明方式。對我而言,以往遺留的許多疑惑,在此都一一得到了解答。最重要的是,您曾經說過,學習MFC的過程中最重要的莫過於自我審視MFC程式碼的能力。很高興地,在我看完本書之後,我確實比以前更有能力來看MFC原始碼了。總之,我為自己能夠更深入了解MFC 而要向您說聲謝謝。謝謝您為我們寫了 深入淺出MFC 這本書。我受益匪淺。

閣下之書,尚有人性,因此我參而再參,雖不悟,也是 enjoyable。看閣下之書的附帶效果是,重燃我追求知識的熱情。知也無涯,定慧談何容易。向閣下致敬:『Kruglinski 的 Inside Visual C++ 和 Hou 的 Dissecting MFC 是通往 MFC Programming 的皇家大道』。 

我是你的一位讀者,住在香港。我剛買了你翻譯的 Inside Visual C++ 4.0(中文版)。在此之前我買了你的另一本書 深入淺出MFC。在讀了 深入淺出MFC前面50~70 頁之後,我想我錯買了一本很艱深的書籍。我需要的是一本教我如何利用MFC來產生一個程式的書,而不是一本教我如何設計一套MFC的書。但是在我又讀了30~40 頁之後,我想這本書真是棒,它告訴了我許多過去我不甚清楚的事情,像是 virtual function、template、exception...。

我是您的忠實讀友,從您1992年出版的「Windows程式設計」到現在的 深入淺出MFC,我已花不少銀子買下數本您的大作。雖然您的作品比其他國內出版的作品價格稍為高了一點,但我覺得很值得,因為我可以感受出您真的非常用心在撰寫,初閱讀您的作品時,有時不知其然,但只要用心品嚐,總是入味七分。有些書教人一邊看書一邊上機實作,會是一個比較好的學習曲線,但我是一個從基隆到台北通車的上班族,花很多時間在車上,在車上拜讀您的大作真是讓人愉快的事情(我回到家已晚,也只有在車上能有時間充實自己)。這段時間內,我無法上機,卻能從中受益。而且一次再一次閱讀,常會有新的收穫,真如古人所說溫故而知新。

今天抱著「無論如何一定要」的心情, 把 Dissecting MFC 拿出來開封。序還看沒完就被深深地感動。這是一本太好的書,我想,我們是一群幸運的讀者。雖然我們沒有Petzold 或 Pietrek, 但是我們一樣能擁有最好的閱讀水準。

有個問題想問您,為何在台灣要做基礎的事(R & D)總是很難如願。為何只有做近利的事才能被認可為成功之道。希望您能多出版一些像 深入淺出MFC的書,讓我們這些想要真正好書的人能大快朵頤一番。謝謝。

我是您忠實的讀者,您所寫的書一向是我在學習新的東西時很大的幫助。除此之外,我也十分喜歡看你為新書所寫的序,帶有哲學家的感覺!最近我想學 MFC,在市面上找到你的大作 深入淺出MFC,拜讀後甚為興奮,也十分謝謝您寫書的用心。

深入淺出MFC是我所讀過之MFC書籍中最精采的一本。您大概不知道,我們人手一本 深入淺出 MFC 吧。深入Visual C++ 4.0 的情況也差不了多少!

買了您的譯作 深入Visual C++ 4.0後,才認識您這在 Windows Programming 著作方面的頭號人物。十分佩服您的文筆,譯得通順流暢,可謂信達雅。之後偶然翻閱您另外的作品Windows 95 系統程式設計大奧秘 深入淺出 MFC,更是對您五體投地,立刻將這兩本書買下來,準備好好享受一下。對於 深入淺出 MFC,我給予極高的評價,因為它完全滿足我的需要。我去年才從台大電機博士班計算機科學組畢業,目前在資策會資訊技術處服國防役。先前作的純是理論研究,現在才開始接觸 Windows Programming。您的 深入淺出 MFC 對我而言是聖經。

真的很感謝您為知識傳授所作的努力!

自從閱讀 深入淺出MFC 之後,我便成了您的忠實讀者。我並不是一位專業程式設計師,而是一個對 Windows Programming 有濃厚興趣(和毅力)的大學生。在漫長而陡峭的學習曲線中,有幾本書對於我們而言就像茫茫大海中的一盞明燈,為我們指引明確的航道!我說的是 Charles Petzold 的Programming Windows 95、David J.Kruglinski 的 Inside Visual C++,還有,當然,您的 深入淺出 MFC!

對您的書總是捧讀再三,即使翻爛了也值得。這本 深入淺出 MFC,不但具有學習價值,亦極具參考價值。

我買您的第一本書,好像是「記憶體管理與多工」。還記得當時熱中突破 640KB記憶體,發現該書如獲至寶。數月前購買了 深入淺出 MFC,並利用閒暇時間翻閱學習(包括如廁時間...J )。

我的學習曲線比較不同,我比較傾向於瞭解事情的因,而不是該如何做事情。比方說,「應該使用 MFC的哪個類別」或「要改寫哪個虛擬函式」,對我而言還不如「CWinApp 何時何地呼叫了我的什麼函式」或「CDocManager 到底做了什麼」來得有趣(嗯,雖說是一樣重要啦)。這些「事情的因」在您的書中有大量詳細的介紹。

拜讀您的大作 深入淺出 MFC 令我感到無比興奮,對於您對電腦技術的專研如此深入,感到真是中國人之光。系上同學對於您的書籍愛恨交加,愛是如此清晰明瞭,恨是恨自己不成材呀!許多學長、同學、學弟都很喜愛您的作品,有些同學還拜您為偶像。因此想請您來演說,讓我們更深入認識程式語言的奧秘。大四學長知道要邀請您來,都非常高興,相當期待您的到來。

深入淺出 MFC 我讀好幾遍了,講一句實在話,這本書給我的幫助真的很多!畢竟這樣深入挖 MFC 運作原理的書難找!要學 MFC 又沒有 Windows SDK 經驗者,建議跟 Programming Windows 95 with MFC 一起看,學起 MFC 會比較紮實。

若單純就「買了會不會後悔」來判斷一本書到底好不好,這本書我覺得物超所值!

剛才又把 深入淺出MFC step0~step1 的程式看了一次,真的感觸良多。酒越陳越香,看老師您的書,真的是越看越「爽」,而且一定要晚上10:00以後看,哇,那種感覺真是過癮。

在書局看到您多本書籍,實在忍不住想告訴您我的想法!我是來謝謝您的。怎麼說呢?姑且不論英文能力,看原文書總是沒有看中文書來得直接啊!您也知曉的,許多翻譯書中的每個中文字都看得懂,但是整段落就是不知他到底在說啥!因此看到書的作者是您,感覺上就是一個品質上的保證,必定二話不說,抱回家囉!雖然眼前用不到,但是翻翻看,大致了解一下,待有空時或是工作上需要時再好好細讀。

網路書局的盛行,讓我也開始上網買些書。但是我只敢買像您的書!有品質嘛!其他的可就不敢直接買囉,總是必須到書局翻翻看,確定一下內容,才可能考慮。

Your books is already 100 times better than any translation on the market. I won't think of to get a Chinese computer book unless you wrote it or translated it.

1997/11月我看見了 深入淺出 MFC。仔細研讀後我知道這是我在 MFC 及 Windows 程式設計領域中的大衛之星。您的書一直都是我的良師,不但奠定了我的根基,也使我對 Windows 程式設計興趣大增。國內外介紹 MFC 程式設計的書很多,但看過範例後仍有一種被當成 puppet 的感覺。感謝侯先生毫不保留地攻堅 MFC,使我得到了豁然開朗的喜悅。

侯先生的文筆及胸襟令我佩服。有著 Charles Petzold 慈父般的講解,也有著 David J.Kruglinski 特有的風趣。您自述中說「先生不知何許人也」,嗯,我願意,我願意做一個默默祝福的人,好叫我在往後歲月裡能有更多喝采和大叫 eureka 的機會!

I am a student of NCKU EE Department, I am also a reader of you books. Your Book give me a lot of help on my research.

選到這本書之前,我還在書架前猶豫:「又是一本厚厚大大卻一堆廢話的爛書,到底有沒有比較能讓我了解的書呀?」但是讀了您的 深入淺出MFC 之後,把我 80% 的疑慮通通消除掉了。想永遠做您的讀者的讀者敬上。

我是您的讀者,雖然我尚未看完這本書,只看到第三篇的第5章,但我忍不住要把心得告訴您。去年我因為想寫Windows程式而買您的書,說老實話,我實在看不懂您所寫的文字(我真的懂C++ 語法,也用Visual Basic寫過Windows程式),故放棄改買其他書籍來學習。雖把那些書全部看完了,也利用MFC來寫簡單程式,但心裡仍搞不懂這些程式的 How、What、Why。後來整理書架,發現這本書,就停下來拿來看,結果越看越搞懂這些Windows程式到底如何How、What、Why。正如您的序所說「只用一樣東西,不明白它的道理,實在不高明」,感謝您能不計代價去做些不求近利的深耕工作,讓我們一群讀者能少走冤枉路。謝謝您!! 祝您身體健康 !!

最近正拜讀大作 深入淺出MFC,明顯感受到作者寫書之負責用心(不論內容、排版設計、 甚至用字遣詞乃至眾多的圖示)。雖然剛開始會覺得有些艱澀,但在反覆閱讀之後便能深深感受其中奧秘。謝謝你的努力! 請再接再厲讓我們有更多好書可看!

身為您的忠實讀者,總是希望能讓您聽到我們的聲音:記得您總是常在作品中強調讀者們寄給你的信對你具有很大的意義,但我要說,您可能不知道您帶給了某些讀者多大的正面意義!就我自己而言,從幾乎放棄對資訊科學的興趣,到留下來繼續努力,從排拒原文書到閱讀原文書成為習慣,從害怕閱讀原文期刊到慢慢發現閱讀它們的樂趣,然後,我打算往資訊方面的研究所前進。我想,不管將來我是否能將工作和興趣互相結合,您都豐富了我追求資訊科學這個興趣時的生活,非常感謝您!

當然,身為一位讀者,還是忍不住要自私地說,希望在很久很久以後,還可以看到您仍然在寫作!當然,身子也要好好照顧。

I'm your reader in Shanghai JiaoTong University(按:上海交通大學)in mainland. Your <Programming WINDOWS MFC> (按:深入淺出MFC 簡體版)is a very good book that I wanted to have for years. Thank you very much. So I want to know if there are another your book that I can buy in mainland? I hope to read your new books.

我非常喜歡你的書,不管是著作或是翻譯,給人的感覺真的是 "深入淺出",我喜歡你用淺近的比喻說明,來解釋一些比較深入和抽象的東西,讀你的書,總讓我有突然 "頓悟" 的感覺,欣喜自己能在迷時找到良師。

Microsoft Developer Studio 與 MFC(Microsoft Foundation Classes)相配合,構成了一個強大的利用 C++ 進行 32 位元 Windows 程序開發的工具,但是由于 MFC 系統相當龐大,內容繁雜,并且夾雜著大量令初學者莫明其妙的 macros,更加大了學習上的難度。

當今市面上有不少講解 C++ 和 VC++ 程序設計的書籍,但 C++ 書籍單純只講 C++,從 C++ 過渡到 VC++ 卻是初學者的一大難關;大多數講解 VC++ 的書都將重點放在如何使用 Microsoft Developer Studio,很少有對 MFC 進行深入而有系統的講解。而將 C++ 與 VC++ 相聯系,從 C++ 的角度來剖析MFC 的運作,深入其設計原理與內部機制的書,更是鳳毛麟角。本人在市面上找了將近四個月,才發現這樣的一本,這就是由蜚聲海峽兩岸的著名電腦專家侯俊傑先生所著之 《深入淺出 WINDOWS MFC 程序設計》 (按:深入淺出MFC 簡體版)。

本人在一月前購得此書,仔細研究月余,自我感覺比以前大有長進,其間由于印刷錯誤等原因,發現多處錯誤,于是向先生去信求教,得先生熱情支持和輔導。當先生得知本書(簡體本)未附光盤,且書中有多處誤印,深恐貽誤讀者,于是將原書光盤所附之源程序和執行文件 email 一份給我,囑我廣為散發,以惠大眾。

這真是本值得好好閱讀,好好保存的好書

深入淺出MFC,侯 sir 自評為 MFC 四大天王之一,的確是傑作...

我聽別人介紹,買了 深入淺出MFC 第二版,的確是很適合我,之前買的書都太籠統了。

侯俊傑先生:您好!從學校出來的七年間,我大多從事 embedded system software 的設計。在大陸,主要從事交換機系統軟件的設計,到了美國,主要從事衛星通信地面站系統軟件的設計。程序設計主要結合 C 和 Assembly。在大陸,embedded system多採用 Intel 的processor,在美國,embedded system 多採用 Motorola 的 processor。所以,我對 Intel 8086, 8051 系列及 Motorola 68000 系列的 assembly 語言比較熟悉,而對 framework 這樣的軟件製造思想和手段一直並不熟悉。近來偶有機會加入一個 project,要生成在 Win95 下運行的代碼,因此,想嘗試一下使用framework 構造軟件。很幸運,我找到了您的書。講 VC++ MFC 的書很多,但能像您這樣做到「深入淺出」的,實在很少。看您的書,是享受。我手裡這本是簡体版,華中理工大學出版社出版。

I am your reader of 《深入淺出 WINDOWS MFC 程序設計》(編按:深入淺出MFC 簡體版). I'm leaving in HUBEI__WUHAN(編按:湖北武漢). Now, I have already get the book in HUA_ZHONG_LI_GONG_DA_XUE(編按:華中理工大學). And I am interested in this book very much.

侯先生,您好,我是屏科大的學生,想要用MFC寫一個可以新增、修改、刪除資料等動作的程式,日前老師借了我您的書 深入淺出MFC 第二版,我讀了很快樂,對於Visual C++ 的IDE環境更為了解,對於MFC 整個架構,有了比較明朗的感覺。

尊敬的侯俊傑先生:我叫董旬。我對 C/C++ 非常有興趣。暢讀了您寫的書《深入淺出 WINDOWS MFC 程序設計》(編按:深入淺出MFC 簡體版),對我有非常大的幫助。在此,先感謝您。現在我感到對 C++ 語言本身和 MFC 框架十分了解,但在編程過程中仍然感到生疏,主要是函數的運用和函數的參數十分複雜。我對WINDOWS SDK 編程較少,是否應該要熟悉 WINDOWS API 函數后,結合 MFC 框架編程?

侯俊傑回覆:的確如此。MFC 其實就是把 Windows API 做了一層薄薄包裝,包裝於各個設計良好的 classes 而已。所以,掌握了 MFC framework 架構組織之後,接下來在 programming 實務方面,就是去瞭解並運用各個 classes,而各個 classes 的 member functions 有許多就是 Windows APIs 的一對一化身。

侯先生你好:我現在是一名資訊預官,還在左營受訓。因為受訓的關係所以偶然間有機會讀到你寫的 深入淺出MFC 第二版。本以為這麼大一本書,一定很難K,但從第一眼開始我就深深的被其中優雅且適當的文辭所吸引。尤其當閱讀第三章時,那些表格讓我回憶起以前修過advanced compiler 去trace java compiler的那段過程,不禁發出會心一笑。

由於我本身學的是電機,所以不同於一般資訊人員所著重的應用層面。從大二時因為想充實自己的電腦實力,努力學寫程式開始,就在浩翰的書海中發現你獨特的風格。尤其現今電書籍多是翻譯居多其中品質良莠不齊,你的作品尤其難能可貴。現今我仍然有時會去閱讀專業期刊或者雜誌,但礙於畢竟不是資訊教育訓練出身,有時會抓不住重點,甚者不求甚解。這是我覺得遺憾之處。但讀你的作品讓我在質量之間都獲得了相當的進步,且讀來相當輕鬆自然。你的序言中提到歡迎讀者的反應,這也是這封mail的動機。我想好的作家需要我們的鼓勵,當然也希望能從你處獲得更多的新知。謝謝。

侯先生:您好!以前我一直是用 DELPHI 和 PB 主要做數據機的,近日在看您編寫的 《深入淺出 WINDOWS MFC 程序設計》(編按:深入淺出MFC 簡體版),收益非淺,很佩服您的寫作水平,講得非常好。在大陸還是很少有您這般水準寫 C++ 的書。在此表示感謝。

尊敬的侯俊傑先生:您好!我是北京的一名計算機工作者,也是您的忠實讀者。有幸讀到您的一本非常優秀的著作 《深入淺出 WINDOWS MFC 程序設計》(編按:深入淺出MFC 簡體版),非常興奮,自感受益匪淺,覺得是一本難得的好書。

Dear JJHou:

I have heard a lot about your [Dissecting MFC] from internet. It is a very good book..Alough I have worked as a programmer for many years, I am new in MFC and MFC is difficul for me.I think [Dissecting MFC] will help me a lot and wish to buy it.

The problem is that I am now live and work in Japan(I am from Beijng) ,so I would like to know how could I buy the book.(I wish to get the original book from Taiwan) I know that you are very busy and time for you is very precious, I feel very sorry,but I hope you could help me and give me some advice.(I can read BIG5)

Thank you very much for your kindness.

By Dai Hui

我現在正在努力研讀先生送我的 <深入淺出 MFC>,經過一個月的時間已
讀完前六章,感覺受益頗豐。我從事軟體開發與設計已有 6~7 年,學過的用過的
語言不在少數,大小項目也做過不少。自以為對語言已有相當的瞭解及悟性。
半年前開始自學 MFC,雖然事前對困難有一定的心理準備,也已自學完 C++,
但遇到的困難卻超過預期。我如坐入雲霧之中,完全不知方向,無法前進。
對於所閱書籍的範例,好像可以理解,但要想對它稍加變動,就不知如何下手,
甚至不知如何去查相關文檔。我幾乎失去信心,要放棄學習的念頭。
直到我得到先生的 <深入淺出 MFC>。經細心研讀月餘,似已能窺到 MFC 的脈絡,
信心倍增。在前六章中先生不僅精述了學習 MFC 的必備基礎觀念,更以獨到而清晰的思路從龐大的 MFC 中抽出精華,砍去末節,模擬了 MFC 的主要行為方式,
實在精妙絕倫。有什麼能比一個讀書人讀到一本好書更幸福的呢! 1999/05/27

我最近正在研讀您的大作<深入淺出 MFC>2/e,真的深深覺得是一本好書,
呵,最好的地方,是讓我覺得,真的是讀得非常的順暢
,尤其是我本身已有c++的基礎,真的是一下了就讓我對
MFC 這東西有了入門到進階的認識……,真的,讀您的
書,就是”順暢”這點讓我印象深刻(當然這要有很多
因素來奠基的啦…)

第三次「挑戰」您的MFC 2/e  這次是念一些C++ calss,and 先念了一些Inside Visual C++ (byD.J.Kruglinski) 再回頭看您這一本....目前挑戰第三篇中....

我個人是一邊念您的書,一邊K別的書,在各書的比較下,您的書並不是一個可以馬上K完,馬上就可以「用」的應該是要慢慢的念。您寫這本書的動機不是要寫一本「xx天速成手冊」   所以,個人請您在前言中聲明一下您寫(或規劃)這本書的原始動機。

我覺得,本立而道生,如果基礎不好,想要真的瞭解application framework是「不可
能」的!!!而且,請不要把讀者預設有年紀的工程師,而請你把讀者擴大為大學學生(我雖然是沒有修過任何資訊科系的課,不過我所認識的同學中,只要是寫windows programing的幾乎人手一本!),據說是老師會要求學生看。所以,請您把這本書當成是「可能成為教科書」的可能性來編輯(與寫作)。

and...第三次催:深入淺出MFC第三版應該快要出了吧....記得要 using vc++6.0 MFC6.0

主旨: 保重身體﹐再創佳績 -- 一個大陸程序員的祝福

侯先生﹐您好﹗
您的個人網站在大陸有了簡體中文版鏡像後﹐我立馬拉了個拷貝下來。您的文章太好了﹗我也研讀了您的《深入淺出MFC》﹐其中的圖片解釋令我印象深刻﹐讓我對MFC有了更深的認識﹐謝謝您的工作﹗

您介紹的都是好書﹐“侯哥介紹的書﹐准沒錯﹐實際上﹐我現在逛書店時﹐都是拿您開的單子去的。遺憾的是﹐大陸現在還比較落後﹐許多您介紹的好書都看不到﹐市場充斥膚淺誇張的垃圾﹐令人傷感。但我相信會逐漸好起來的。

您是個認真踏實﹐工作起來拼命三郎式的人﹐我很佩服您。更重要的﹐我希望您能保重身體﹐不要累壞了﹐我們大陸的程序員也希望您是棵常青樹﹐源源不斷的介紹好書﹐翻譯好書﹐寫作好書﹗那我們也就有福了(讀您的書或您介紹的書是一種艱苦的享受)。順祝安康﹗

張中華 99.9.20 廣東中山

侯先生:您好
    我是陳欣,曾在一個月前向您詢問有關購買《深入淺出 MFC 第二版》
和《Windows 95系統程式設計-虛擬機器與 VxD程式設計》的問題.收到
您的回信後,我即前往松崗網站查詢.但會員注冊始終注冊不成功,導致
不能線上訂書.我在不同時間嘗試了多次,並發mail詢問,都無音訊.
    但幸運的是一日竟在一書店發現了《深入淺出 MFC 第二版》,且僅有
一本了,老板說很久前進的幾本,但因為臺灣書價高,賣得不好,現在也不進
臺灣的書了,真是運氣啊!回家後即閱讀起來,我很久都沒有懷著這麼興奮
的心情讀一本書了(也許此書的來之不易和高的價格也起到了一定作用吧).
現在我已把此書讀完一遍,明白了許多以前困擾我的問題,我從未像現在
這樣感覺到MFC離我是這麼近,真的.
    .
陳欣 99.11.9

 


News / BBS 論壇(CompBook and/or programming)

請問,在 MFC 書籍之中,哪一本比較容易懂,因為我是初學MFC,所以我需要的是比較基礎且容易瞭解的,想請大家推薦一下適合的書。

請問,想要從 DOS 跨足到 Windows 程式設計有哪些書值得推薦呢?

請問 VISUAL C++ 初學者適合的好書 ?

剛學 MFC 程式,是否可以推薦幾本你認為很好的工具書或者是參考書,原文的也沒關係,重要的是講的詳細。謝謝各位

請推薦幾本 Visual C++ 的書


我是一個剛學 VC 不久的人,想寫 Windows 程式,卻發現一大堆看不懂的函式或類別。查 help,都是英文,難懂其中意思。請問一下有沒有關於這方面的函式用法及意義的書籍呢? 有沒有這方面的初學書籍。我逛了幾間書店,是有買幾本 MFC 書籍,不過還是看不懂。

我想請問以下巨集的意義及其使用時機和作用:DECLARE_DYNCREATE, DECLARE_DYNAMIC, IMPLEMENT_DYNAMIC,IMPLEMENT_DYNCREATE, DECLA RE_MESSAGE_MAP, BEGIN_MESSAGE_MAP, END_MESSAGE_MAP。感激不盡,因為我常攪不清楚。

好像世界末日:最近買了 深入淺出MFC。我一頁一頁仔細地閱讀。第一章...第二章...勉強有點概念,但是到了第三章,感覺好像世界末日了。MFC 六大技術的模擬...好像很難懂,讀起來非常吃力L 是不是有其他書講得比較簡單的?我不是電腦科系學生,只是對電腦程式設計有興趣,一路由basic -> FORTRAN -> C -> C++ 走來...


【BBS 上的指教】

作者 iostream                               看板 CompBook
標題 Re: 【深入淺出 MFC 2/e 五刷】感言
時間
───────────────────────────────────

==> 在 horngsh.bbs@bbs.cs.nthu.edu.tw (阿瓜) 的文章中提到:
: ※ 引述《EvilKing (殺蛋王)》之銘言:
: > 請問大師是否有勘誤表, 我買的是二版二刷. 看得提心吊膽的
: > 謝謝 ^_^
: 問個笨問題,幾刷要看哪裡?

奇怪! 這本書真有這麼好嗎?
我必須提出這個問號???????

以下我有幾個想法 :

1. 這本書包裝太厚. 不該有的東東太多, 在第一版中, 你甚至可以看到OWL的程式
照侯俊傑先生的說法, 他並不了解OWL. 且在範例中也証明他不明白OWL. 幸好
第二版中, 他刪去了這一段. 附錄A所列的無責任書評, 在我想來也是多餘. 因
為這篇書評在RUN!PC早有提及, 後來也出了無責任書評第三集, 因此實在沒有這
個必要. 想來是侯先生要增加書的厚度, 有以致也.

2. 侯先生在第一章中提出的Win32基本觀念. 本來作業系統就是侯先生的專長, 因
此由他來提筆, 實在是最佳的範例. 可是這一章節只到達Jeffrey的水準, 並沒
有Matt的水準. 也許是侯先生認為是基本程式觀念的考量. 可是我還是以為讀
者該有知的權利. 如 : Page 30, 侯先生只簡略的提到PE可執行檔的格式, 只教
你用DUMPBIN倒出來看看....

3. 第二章, 侯先生提到C++的重要性質. 和侯譯的C++物件模型比起來. 這一章只算
是C++的常識篇而已. 並沒有觸及太多的物件導向觀念. 如談encapsulation就沒
有討論到friend和pointer對封包造成的傷害. 也沒有介紹C++的struct和class
具有同價觀念. 更別說是interface和implementation的觀念了. 說到繼承也沒
有區分什麼是class inheritance和implementation inheritance了.

4. 第五章, 頁325提到C++是一個複雜的語言, AFX小組預期MFC的使用者不可能人人
皆為C++專家, 所以也們並沒有採用所有的C++高階性質(例如多重繼承).....
這句話有很大的問題. MFC之前沒有多重繼承的原因是因為之前MFC模仿的語言
Smalltalk只用單一繼承的方式. 而Smalltalk在Framework方面算是先師.

這本書雖然是一本相當用心的書, 但是倒不算是什麼很了不起的書. 它沒有實作的
用途, 因為它所舉的MFC Library實在太少; 它也不是Inside的書, 因為它的主題
太廣, 從C++, SDK, MFC....都沒有專精的素求. 最後, 我認為這本書太不實際,
它不涉及網路, 証明侯先生對網路明白太少, 第二它不涉及OLE, 因為他在ATL上面
實在著墨不多, 而ATL和MFC正是Visual C++的二大架構. 這本書實在太老套, 早在
這本書之前侯先生就寫過二本Visual C++物件導向的書, 這一本只是再創造而己,
沒有其他新意.

於1999.2.26日夜




作者 "炒飯炒麵一碗湯" <capri@ms5.hinet.net>, 看板 CompBook
標題 Re: 【深入淺出 MFC 2/e 五刷】感言
時間 DCI HiNet (Sat Feb 27 02:47:04 1999)
────────────────────────────────────

終於有人跳出來說話了…
侯先生的這本大作,好像一直沒人批評過,小弟也來參一腳:

就如同明月先生所說的,書評不應該放在這本書裡吧!
或許出版商或侯Sir有他們的考量,但是以讀者的立場而言
因為這些東西而讓書太厚實在有點…

這些灌水的東西共計有:

(a)1-16頁的讀者來函:共16頁
(b)超長的序,嗯,這應該沒有關係
(c)843-872頁的無責任書評:共30頁(其實裡面有一些發人省思的東西,還好)
(d)873-914頁的Scribble原始碼:共42頁(這最嚴重,幾乎沒必要的東西)
(e)915-920頁的VC範例程式一覽:共6頁(很可惜,如果再多加發揮的話很有用,
但是侯Sir只是列個標題,連說明都是英文,和看Help檔沒什麼差別)

共計:94頁

不是我無聊找碴,您可曾看到有哪本書有將近一百頁的贅肉?
更別題書中動不動就列出四五頁的原始碼了。這些在光碟上都有,何必浪費紙張?
也因此這本書成為我書架上土產胖子排行榜的第二名(第一名是C++的Language
Reference、第三名正好也是侯Sir的譯作:Inside Visual C++),售價也是佼佼者。(以上皆是講本土著作,原文書…$$$$)

不過消掉這些贅肉,這本書還是有它的價值。中文的VC書籍中,很少講MFC理論的。不過以此觀點來看,第四章的IDE介紹就顯得有點不倫不類。
而且在章末又放了Scribbled 的原始碼20頁(唉~這東西在第八章講的還比較多)

至於書中缺少的部份,我認為要看您如何去定位這本書。
除了網路、ATL,書中對於資料庫、DirectX也是付之闕如,ActiveX也著墨不多
但總不能要求一本書把所有Program的東西講完吧!
以探討MFC的內部而言,本書沒什麼好批評的了。

總而言之,這本書該不該買,我想還是肯定的
但是如果書能瘦點、售價能低點,那就更好了。
至於初學者,千萬不要拿這本來入門,先找本簡單的看(我不是指 xxx 24 hr之類的)
只要書的說法自已覺得好吸收就行了,舊版4.X,5.x的也有很多好書!

PS.侯Sir說不想為VC6.0改版,說6版只多了一點東西(呵!一堆CxxEx)… 很可惜,
中文的VC書籍夠少的了。
嗯!如果有改版,也許胖子排行榜的榜主就要換人了。

以上言論僅個人對此書之意見,對侯先生沒有任何不敬之意。
對於Program書籍的本土優秀作者,我仍認為除侯Sir不作二人想。
ㄜ!本人並無以此攻擊洪先生之意。




作者 gis87506@cis.nctu.edu.tw (Jian-Liang Liu), 看板 CompBook
標題 Re: 【深入淺出 MFC 2/e 五刷】感言
時間 Dept. of Computer & Information Science, NC (Sat Feb 27 14:10:17 1999)
────────────────────────────────────

: 就如同明月先生所說的,書評不應該放在這本書裡吧!
: 或許出版商或侯Sir有他們的考量,但是以讀者的立場而言
: 因為這些東西而讓書太厚實在有點…

書厚不厚沒什麼關係,內容是不是充實比較重要.
Programming Windows 95 改版後,厚度不是也很夠?

: 這些灌水的東西共計有:
: (a)1-16頁的讀者來函:共16頁
: (b)超長的序,嗯,這應該沒有關係
: (c)843-872頁的無責任書評:共30頁(其實裡面有一些發人省思的東西,還好)

書評需不需要也是見仁見智. 我想侯 sir 會列出來也是想要推薦給讀者關於
MFC ,windows 這方面領域值的一讀的書.

: (d)873-914頁的Scribble原始碼:共42頁(這最嚴重,幾乎沒必要的東西)

這部分倒是真的比較沒必要再列出來..

: (e)915-920頁的VC範例程式一覽:共6頁(很可惜,如果再多加發揮的話很有用,但
: 是侯Sir只是列個標題,
: 連說明都是英文,和看Help檔沒什麼差別)
: 共計:94頁
: 不是我無聊找碴,您可曾看到有哪本書有將近一百頁的贅肉?
: 更別題書中動不動就列出四五頁的原始碼了。這些在光碟上都有,何必浪費紙張?
: 也因此這本書成為我書架上土產胖子排行榜的第二名(第一名是C++的Language
: Reference、
: 第三名正好也是侯Sir的譯作:Inside Visual C++),售價也是佼佼者。(以上皆是講
: 本土著作,原文書…$$$$)

Programming windows 95 , Programming windows 95 with MFC .這些重量級
的書,安排的方式也都是把程式碼給列出來.不過因為這兩本書都沒用到 winzard
,所以相對的程式碼列出來沒像 Inside Visual C++ 那麼的可觀.不過每個範例
四五頁的程式碼也是很平常可見.換個角度來看,也許作者也可以只列出 key point
的地方,針對這些部分作說明即可,而把程式碼放到光碟片中,讓有需要的人自行去
找出來看.這種方式可以大大的縮減書的厚度,可是對於對 MFC , windows
programming 還不熟的人,這樣子的方式反而會照成不便.

就我自己看 programming windows 95(舊版的) 的經驗來說,我自己都是用色筆把
範例程式中之前沒提過的,或是自己不懂得地方給上色(類似深入淺出 MFC 把重要
的地方給反白),其餘的地方大致上不會再花時間去看.若是今天作者只是把他認為
重要的地方列出來,其它的不列,反而會照成我閱讀上的不便.(讀書還是比看螢幕舒
服)

一本書的售價合不合理很難去評量.我買書會比較傾向於這本書對我是不是有用.有
用的話,售價再貴也是值得.內容上寫的不好,或是對我沒用的書籍,再便宜我也不會
想要花這筆錢.書算是最便宜的東西了,花個幾百塊或是上千塊就可以買到作者所學
的精華,去那邊可以找到這麼便宜的事呢..




作者 gaussk (Gauss) 看板 CompBook
標題 Re: 【深入淺出 MFC 2/e 五刷】感言
時間 Sat Feb 27 12:06:06 1999
────────────────────────────────────

本來我是很不願意在網路上談書的, 不過看到這篇文章的評論, 我有很多不
同的意見, 所以我就提出些自己的看法. 從 1993 年微軟 VC1.0 出來後我就
開始用 MFC 了, 在此之前我是 base on Windows++ 書中的程式來架構自己的
class library. 如果有人對當年的 MFC vs OWL 論戰還有印象的話, 應該知道
在當時 BBS 擁護 MFC 的人很少, 我是少數的幾個. 至於 MFC & OWL 的優劣,
我不想再談, 有興趣的可以到各 BBS 的精華區看看在 1994 年左右我的文章.

寫出以上的歷史主要是想說明我對 MFC 的認識足以讓我瞭解什麼才是 MFC
的精華, 何為 MFC 之本. 我用 MFC 寫過數十萬行的 code, 數個的商業軟體.
( 拿過雜誌 editor choice, 其中一個後續版本還拿到台灣精品獎).

我看過的 MFC 書籍不知凡幾. 真正能掌握精髓的不多. 很不巧, 侯俊傑的這
本書就是我認為 MFC 書中的佼佼者. 早期 MFC 資源不豐富的年代,最好的書
是 VC1.5 內附的 Developer Guide. 它整本書的內容就是以 Scribble 程式來
示範說明 MFC 的使用. 對於 MFC 性能的解說就連當年的 Inside Visual C++
都不及它.而侯俊傑書中以同一個程式來解說, 它的深度及廣度更超過了前兩者.

很多初學者在學習程式時, 都有 <多就是好> 的迷思, 渾然忘了真正的核心.
就像少林寺有七十二絕技, 但是沒有人可以精通所有東西, 真正重要的東西
是少林易經筋或九陽神功這類紮根基的內功. 有了好的內功基礎, 打通了任
督二脈, 要再學其他武功的運用法門, 實在是易如反掌, 雖然不至於如張無
忌般, 可以在看過一篇 <少林龍爪手> 之後就可以依樣畫葫蘆使出來, 我想
也相差無幾了.

回過頭來看看 MFC, 我認為侯書已經將 MFC 的精華點出來了. 如果能將侯書
完全弄懂, 對於 MFC 精神的掌握雖不中亦不遠矣. 剩下的就是火候了. 看懂
了侯書之後, 就如同學習到了內功的呼吸吐納法門, 只要勤加練習, 假以時
日必成大器. 當然練內功是不夠的, 還得學習運勁方法, 像是 Inside VC++
及 Jeff Prosise 都是不錯的選擇. 以上都是侯俊傑在無責任書評中 MFC 四大
天王之一.

基本上初學者要學 MFC, 侯書+Inside VC++ 或 Jeff 書, 兩者相輔相成即
可. 至於其他如 OLE, COM, 網路等領域, 都足以再寫一本同樣厚度的書, 實
在不適宜於在書中.

> 1. 這本書包裝太厚. 不該有的東東太多, 在第一版中, 你甚至可以看到OWL的程式

OWL 可以不要放. 不過無責任書評及讀者來函都有點出正確學習方向的用
處, 最好還是要有. 畢竟任何 MFC 書, 包含侯書, 都無法像大賣場般,
<一次購足> 你所需的東西.

> 2. 侯先生在第一章中提出的Win32基本觀念. 本來作業系統就是侯先生的專長, 因
> 此由他來提筆, 實在是最佳的範例. 可是這一章節只到達Jeffrey的水準, 並沒
> 有Matt的水準. 也許是侯先生認為是基本程式觀念的考量. 可是我還是以為讀

以上的說法很怪. 大多數的人都知道 Jeffrey 的 Advanced Windows 仍是同領
域書籍的上上之選. Matt 在 Kernel 很專精, 但在 Anvanced Windows 領域中,
還是以 Jeffrey Richter 為大宗師. 以上說法似乎認為 Jeffrey 不及 Matt ,
事實上他們各有專攻.

> 3. 第二章, 侯先生提到C++的重要性質. 和侯譯的C++物件模型比起來. 這一章只算
> 是C++的常識篇而已. 並沒有觸及太多的物件導向觀念. 如談encapsulation就沒
> 有討論到friend和pointer對封包造成的傷害. 也沒有介紹C++的struct和class
> 具有同價觀念. 更別說是interface和implementation的觀念了. 說到繼承也沒
> 有區分什麼是class inheritance和implementation inheritance了.

MFC 書本來就不該寫太多純 C++ 的東西. 基本上如果不懂 C++ 應該看
C++ Primer 或 C++ Programming Language.

> 這本書雖然是一本相當用心的書, 但是倒不算是什麼很了不起的書. 它沒有實作的
> 用途, 因為它所舉的MFC Library實在太少; 它也不是Inside的書, 因為它的主題

掌握了MFC 精華, MFC Library 只要在 IDE 中用 Online Help 就可以看
懂了, 何需寫在書中, 徒然浪費篇幅.

> 太廣, 從C++, SDK, MFC....都沒有專精的素求. 最後, 我認為這本書太不實際,
> 它不涉及網路, 証明侯先生對網路明白太少, 第二它不涉及OLE, 因為他在ATL上
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

前面說過, 網路及 OLE 都可以再寫一本書了. 以上說法也很怪, 如果
有人用 "書中沒有談網路也沒有談多媒體設計" 來評論 C++ Primer
或是 Bjarne Stroustrup 的 C++ Programming Language 寫得不實際, 你
也會很奇怪. 要學 TCP/IP 網路應看 TCP/IP 書, 要學 OLE , 就看
Inside OLE. 不要想用 <一次購足> 的心態來學習.

> 這本書之前侯先生就寫過二本Visual C++物件導向的書, 這一本只是再創造而己,
> 沒有其他新意.

我的感想是很多人喜歡<是己非人>, 藉著否定別人的成就來肯定自己!
雖然我不知道原作者是不是如此, 不過我還是覺得適時的肯定別人的
成就, 會對自己更有幫助.

我不否認我和侯俊傑認識, 所以也許評論不夠中肯. 不過我已經儘量
以技術層面來探討侯書的優劣, 不涉及私人感情. 我早年也曾經寫過
書, 知道其中的難度. 對於侯書, 我一向是內舉不避親的.