深入浅出MFC第2版(PDF格式)-第4部分
按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
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 源代码给你看。
这是我所谓的深入。
8
…………………………………………………………Page 31……………………………………………………………
唯有掌握住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、mand Routing 等核心技术。这些技术正
是其它书籍最缺乏的部份。此篇之最后数章则脱离Scribble 程序,另成一格。
9
…………………………………………………………Page 32……………………………………………………………
本书前身,1994/08 出版的Visual C++ 对象导向MFC 程序设计基础篇以及1995/04 年
出版的应用篇篇,序言之中我曾经这么说,全世界没有任何书籍文章,能够把MFC 谈得这么
深,又表现得这么浅。这些话已有一半成为昨日黄花:Microsoft Systems Journal 1995/07 的一
篇由Paul Dilascia 所撰的文章Meandering Through the Maze of MFC Message and mand
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 与mand
Routing 的讨论也更详细得多,填补了上一版的缝隙。更值得一提的是, 我把这些在MFC 中
极神秘而又极重要的机制,以简化到不能再简化的方式,在DOS 程序中仿真出来,并且补
充一章专论C++ 的高阶技术。至此,整个MFC 的基础架构已经完全曝露在你的掌握之中,
再没有任何神秘咒语了。
本书从MFC 的运用,钻入MFC 的内部运作,进而application framework 的原理,再至物
件导向的精神,然后回到MFC 的运用。这会是一条迢迢远路吗?
似远实近!
许多朋友曾经与我讨论过,对于MFC 这类application framework,应该挖掘其内部机制到什
么程度?探究源代码,岂不有违「黑盒子」初衷?但是,没有办法,他们也同意,不把那些
奇奇怪怪的宏和指令搞清楚,只能生产出玩具来。对付MFC 内部机制,态度不必像对付
MFC 类别一样;你只需好好走过那么一回,有个印象,足矣。至于庞大繁复的整个application
framework 技术的铺陈串接,不必人人都痛苦一次,我做这么一次也就够了 。
10
…………………………………………………………Page 33……………………………………………………………
林语堂先生在朱门一书中说过的一句话,适足作为我写作本书的心境,同时也对我与朋友
之间的讨论做个总结:
「只用一样东西,不明白它的道理,实在不高明」。
祝各位胸中丘壑自成!
侯俊杰 新竹1996。08。15
P。S。 愈来愈多的朋友在网络上与我打招呼,闲聊谈心。有医师、盲生、北京的作家、香港的
读者、从国中到研究所的各级学生。学生的科系范围广到令我惊讶,年龄的范围也大到令我
惊讶。对于深居简出的作家而言,读者群只是一个想象空间,哦,我真有这么多读者吗?! 呵
呵,喜欢这种感觉。回信虽然是一种压力,不过这是个甜蜜的负担。
你们常常感谢我带给你们帮助。你们一定不知道,没有你们细心研读我的心血,并且热心写
信给我,我无法忍受写作的漫漫孤寂!我可以花三天的时间写一篇序,也可以花一个上午设
计一张图。是的,我愿意!我对拥有一群可爱可敬的读者感到骄傲。
11
…………………………………………………………Page 34……………………………………………………………
12
…………………………………………………………Page 35……………………………………………………………
目 錄
目錄
( 表示本版新增內容)
*
* 讀者來函 / 1
* 第版序 / 5
第版序 / 7
目錄 / 13
第0章 你定要知道(導讀) / 27
這本書適合誰 / 27
你需要什麼技術基礎 / 29
你需要什麼軟硬體環境 / 29
讓我們使用同種語言 / 30
本書符號習慣 / 34
磁片內容與安裝 / 34
範例程式說明 / 34
與前版本之差異 / 39
如何聯絡作者 / 40
第篇 勿在浮砂築高臺 本書技術前提
/ 001
第1章 Win32 程式基本觀念/ 003
Win32 程式開發流程/ 005
需要什麼函式庫(。LIB ) / 005
需要什麼表頭檔( )
。H / 006
13
…………………………………………………………Page 36……………………………………………………………
深入湷觥 FC
以訊息為基礎,以事件驅動之 / 007
個具體而微的 Win32 程式 / 009
程式進入點 WinMain / 015
視窗類別之裕耘c視窗之誕生 / 016
訊息迴路 / 018
視窗的生命樞 視窗函式
/ 019
訊息映射(Message Map )雛形 / 020
對話盒的咦鳌 / 022
模組定義檔(。DEF ) / 024
資源描述檔( )
。RC / 024
Windows 程式的生與死 / 025
閒置時間的處理:OnIdle / 027
* Console 程式 / 028
* Console 程式與DOS 程式的差別 / 029
* Console 程式的編譯聯結 / 031
* : 程式設計 /
JBACKUP Win32 Console 032
* : 程式設計 /
MFCCON MFC Console 035
* 什麼是 C Runtime Library 的多緒版本 / 038
行程與執行緒(Process and Thread ) / 039
核心物件 / 039
個行程的誕生與死亡 / 040
產生子行程 / 041
個執行緒的誕生與死亡 / 044
* 以 _beginthreadex 取代CreateThread / 046
執行緒優先權(Priority ) / 048
* 多緒程式設計實例