logo资料库

深入浅出MFC(侯俊杰)简体中文版.pdf

第1页 / 共1009页
第2页 / 共1009页
第3页 / 共1009页
第4页 / 共1009页
第5页 / 共1009页
第6页 / 共1009页
第7页 / 共1009页
第8页 / 共1009页
资料共1009页,剩余部分请下载后查看
前言
关于简体版的说明
电子书开放自由下载声明
封面
山高月小 水落石出
扉頁
读者来函
第二版序
第一版序
目录
第0章 你一定要知道(导读)
这本书适合谁
你需要什么技术基础
你需要什么软硬件环境
让我们使用同一种語言
本书符号习惯
光盘內容与安裝
范例程序说明
与前版本之差异
如何联络作者
第一篇 勿在浮砂筑高台
第1章 Win32 基本程序观念
Win32 程序开发流程
需要什么函数库(.LIB)
需要什么头文件(.H)
以消息为基础,以事件驱动之
一个具体而微的Win32 程序
程序进入点WinMain
窗口类别之注册与窗口之诞生
消息循环
窗口的生命中枢:窗口函数
消息映射(Message Map)的雏形
对话框的运作
模块定义文件(.DEF)
资源描述档(.RC)
Windows 程序的生与死
空闲时间的处理:OnIdle
Console 程序
Console 程序与DOS 程序的差别
Console程式的編译联结
JBACKUP:Win32 Console 程序设计
MFCCON:MFC Console 程序设计
什么是C Runtime 函数库的多线程版本
进程与执行线程(Process and Thread)
核心对象
一个进程的诞生与死亡
产生子进程
一个执行线程的诞生与死亡
以 _beginthreadex 取代CreateThread
执行线程优先权(Priority)
多线程程序设计实例
第2章 C++ 的重要性质
类别及其成员- 谈封装(encapsulation)
基础类别与衍生类别:谈继承(Inheritance)
this 指针
虚拟函数与多态(Polymorphism)
类别与对象大解剖
Object slicing 与虚拟函数
静态成员(变量与函数)
C++ 程序的生与死:兼谈构造式与析构式
四種不同的对象生存方式
所谓"Unwinding"
执行时期型别信息(RTTI)
动态生成(Dynamic Creation)
异常处理(Exception Handling)
Template
第3章 MFC 六大关键技术之仿真
MFC 类别阶层
Frame1 范例程序
MFC 程序的初始化过程
Frame2 范例程序
RTTI(执行时期型别辨识)
类别型录网与CRuntimeClass
DECLARE_DYNAMIC / IMPLEMENT_DYNAMIC 宏
Frame3 范例程序
IsKindOf(型别辨识)
Frame4 范例程序
Dynamic Creation(动态生成)
DECLARE_DYNCREATE / IMPLEMENT_DYNCREATE 宏
Frame6 范例程序
Persistence(永续生存)机制
Serialize(资料读写)
DECLARE_SERIAL/IMPLEMENT_SERIAL 巨集
没有范例程序
Message Mapping(消息映射)
Frame7 范例程序
Command Routing(命令绕行)
Frame8 范例程序
本章回顾
第二篇 欲善工事先利其器- Visual C++ 5.0 开发工具
Visual C++ 整合开发环境
安装与设定
MFC tech. notes
四个重要的工具
内务府总管:Visual C++ 整合开发环境
关于project
关于工具设定
Source Browser
Online Help
除错工具
VC++ 除错器
Exception Handling
程序代码产生器:AppWizard
东圈西点完成MFC 程序骨干
Scribble Step0
威力强大的资源编辑器
Icon 编辑器
Cursor编辑器
Bitmap编辑器
ToolBar编辑器
VERSIONINFO 资源编辑器
String Table编辑器
Menu 编辑器
Accelerator 编辑器
Dialog 编辑器
Console 程序的项目管理
第三篇 浅出 MFC 程序设计
第5章 总观Application Framework
什么是Application Framework?
侯捷怎么说
我怎么说
别人怎么说
为什么使用Application Framework
Microsoft Foundation Class(MFC)
白头宫女话天宝:Visual C++ 与MFC
纵览MFC
General Purpose classes
Windows API classes
Application framework classes
High level abstractions
Afx 全域函数
MFC 宏(macros)
MFC 数据类型(data types)
第6章 MFC 程序的生死因果
不二法门:熟记MFC 类别的阶层架构
需要什么函数库?(.LIB)
需要什么头文件?(.H)
precompiled headers
简化的MFC 程序架构-以Hello MFC 为例
Hello 程序源代码
CALLBACK 与 afx_msg
MFC 程序的来龙去脉(causal relations)
我只借用两个类别:CWinApp 和CFrameWnd
CWinApp - 取代 WinMain 的地位
CFrameWnd - 取代WndProc 的地位
引爆器 - Application object
隐晦不明的WinMain
AfxWinInit-AFX 内部初始化动作
CWinApp::InitApplication
CMyWinApp::InitInstance
CFrameWnd::Create 产生主窗口(并先注册窗口类别)
奇怪的窗口类别名称Afx:b:14ae:6:3e8f
窗口显示与更新
CWinApp::Run - 程序生命的活水源头
把消息与处理函数串接在一起:Message Map 机制
来龙去脉总整理
Callback 函数
空闲时间(idle time)的处理:OnIdle
Dialog 与Control
通用对话框(Common Dialogs)
本章回顾
第7章 简单而完整:MFC 骨干程序
不二法门:熟记MFC 类别阶层架构
MFC 程序的UI 新风貌
Document/View 支撑你的应用程序
利用 Visual C++ 工具完成 Scribble step0
骨干程序使用哪些MFC 类别?
Document Template 的意义
Scribble 的Document/View 设计
主窗口的诞生
工具栏和状态列的诞生(Toolbar & Status bar)
鼠标拖放(Drag and Drop)
消息映射(Message Map)
标准菜单File / Edit / View / Window / Help
对话框
改用CEditView
第四篇 深入MFC 程序设计
第8章 Document-View 深入探討
为什么需要Document-View(形而上)
Document
View
Document Frame(View Frame)
Document Template
CDocTemplate管理 CDocument / CView / CFrameWnd
Scribble Step1 的Document - 数据结构设计
MFC Collection Classes 的选用
Template-Based Classes
Template-Based Classes 的使用方法
CScribbleDoc 的修改
SCRIBBLEDOC.H
SCRIBBLEDOC.CPP
文件:一连串的线条
CScribbleDoc 的成员变量
CObList
CScribbleDoc 的成员函数
线条与坐标点
CStroke 的成员变量
CArray
CStroke 的成员函数
Scribble Step1 的View:资料重绘与编辑
CScribbleView 的修改
SCRIBBLEVIEW.H
SCRIBBLEVIEW.CPP
View 的重繪動作 - GetDocument 和OnDraw
CScribbleView 的成員變數
CScribbleView 的成員函式
View 與使用者的交談(滑鼠訊息處理實例)
ClassWizard 的輔佐
WizardBar的輔佐
Serialize:对象的文件读写
Serialization 以外的文件读写动作
台面上的Serialize 动作
台面下的Serialize 写档奥秘
台面下的Serialize 读档奥秘
DYNAMIC / DYNCREATE / SERIAL 三“宏”
Serializable 的必要条件
CObject 类别
IsKindOf
IsSerializable
CObject::Serialize
CArchive 类别
operator<< 和 operator>>
效率考量
自定SERIAL 宏给抽象类别使用
在CObList 中加入CStroke 以外的类別
Document 与View 交流- 为Step4 做准备
第9章 消息映射与命令绕行
到底要解决什么
消息分类
万流归宗Command Target(CCmdTarget)
三个奇怪的宏,一张巨大的网
DECLARE_MESSAGE_MAP 宏
消息映射网的形成:BEGIN_/ON_/END_ 宏
米诺托斯(Minotauros)与西修斯(Theseus)
两万五千里长征- 消息的流动
直线上溯(一般Windows 消息)
拐弯上溯(WM_COMMAND 命令消息)
罗塞达碑石:AfxSig_xx 的奥秘
Scribble Step2:UI 对象的变化
改变菜单
改变工具栏
利用ClassWizard 连接命令项识别码与命令处理函数
维护UI 对象状态(UPDATE_COMMAND_UI)
本章回顾
第10章 MFC 与对话框
对话框编辑器
利用ClassWizard 连接对话框与其专属类别
PENDLG.H
PENDLG.CPP
对话框的消息处理函数
MFC 中各式各样的MAP
对话框数据交换与查核(DDX & DDV)
MFC 中各式各样的DDx_ 函数
如何唤起对话框
本章回顾
第11章 View 功能之加強 与 重绘效率之提升
同時修改多个Views:UpdateAllViews 和OnUpdate
在View 中定义一个hint
把hint 传给OnUpdate
利用hint 增加重绘效率
可卷动的窗口:CScrollView
大窗口中的小窗口:Splitter
分裂窗口的功能
分裂窗口的程序概念
分裂窗口之实作
本章回顾
第12章 打印与预览
概观
打印动作的背景原理
MFC 预设的打印机制
Scribble 打印机制的增强
打印机的页和文件的页
配置GDI 绘图工具
尺寸与方向:关于映射模式(坐标系统)
分页
表头(Header)与表尾(Footer)
动态计算页码
打印预览( Print Preview)
本章回顾
第13章 多重文件与多重显示
MDI 和SDI
多重显像(Multiple Views)
窗口的动态分裂
窗口的静态分裂
CreateStatic 和CreateView
窗口的静态三叉分裂
Graph 范例程序
静态分裂窗口之观念整理
同源子窗口
CMDIFrameWnd::OnWindowNew
Text 范例程序
非制式作法的缺点
多重文件
新的 Document 类別
新的 Document Template
新的 UI 系统
新文件的文件读写动作
第14章 MFC 多线程程序设计(Multi-threaded Programming in MFC)
从操作系统层面看执行线程
三个观念:模块、进程、执行线程
执行线程优先权(Priority)
执行线程排程(Scheduling)
Thread Context
从程序设计层面看执行线程
Worker Threads 和 UI Threads
错误观念
正确态度
MFC 多线程程序设计
探索CWinThread
产生一个Worker Thread
产生一个UI Thread
执行线程的结束
执行线程与同步控制
MFC 多线程程序实例
第15章 定制一个AppWizard
到底Wizard 是什么?
Custom AppWizard 的基本操作
剖析 AppWizard Components
Dialog Templates 和 Dialog Classes
Macros
Directives
动手修改Top Studio AppWizard
利用资源编辑器修改IDD_CUSTOM1 对话窗画面
利用ClassWizard 修改IDD_CUSTOM1 对话窗的对应类别CCustom1Dlg
改写OnDismiss 虚拟函数,在其中定义macros
修改 text template
Top Studio AppWizard执行结果
更多的信息
第16章 站上众人的肩膀- 使用 Components 和 ActiveX Controls
什么是 Component Gallery
使用Components
Splash screen
System Info for About Dlg
Tips of the Day
Components 实际运用:ComTest 程序
修改ComTest 程序内容
使用 ActiveX Controls
ActiveX Control 基础观念:Properties 、Methods、Event
ActiveX Controls的五大使用步骤
使用Grid ActiveX Control:oOcxTest程序
第五篇 附錄
附錄A
無責任書評:從搖籃到墳墓 - Windows 的完全學習
無責任書評:MFC四大天王
附錄B Scribble Step5 程式原始碼列表
附錄C Visual C++ 5.0 MFC範例程式總覽
附錄D 以 MFC 重建 Debug Window(DBWIN)
1.这个文档是从侯捷网站提供的繁体板简体化过来的。 2.由于排版问题,有些繁体说法在换行时候没有被替换,所以遇到问题大家可以对照原文比较一下。 3.附录、无责任书评那个文件没有转(估计看到那个地方的时候,你手里也该有一本纸板的了)。 《深入浅出MFC》2/e 电子书开放自由下载 声明 致亲爱的大陆读者 我是侯捷(侯俊杰)。自从华中理工大学于1998/04 出版了我的《深入浅出MFC》 1/e 简体版(易名《深入浅出Windows MFC 程序设计》)之后,陆陆续续我 收到了许多许多的大陆读者来函。其中对我的赞美、感谢、关怀、殷殷垂询, 让我非常感动。 《深入浅出MFC》2/e 早已于1998/05 于台湾出版。之所以迟迟没有授权给大 陆进行简体翻译,原因我曾于回复读者的时候说过很多遍。我在此再说一次。 1998 年中,本书之发行公司松岗(UNALIS)即希望我授权简体版,然因当时 我已在构思3/e,预判3/e 繁体版出版时,2/e 简体版恐怕还未能完成。老是让 大陆读者慢一步看到我的书,令我至感难过,所以便请松岗公司不要进行2/e 简 体版之授权,直接等3/e 出版后再动作。没想到一拖经年,我的3/e 写作计划 并没有如期完成,致使大陆读者反而没有《深入浅出MFC》2/e 简体版可看。 《深入浅出MFC》3/e 没有如期完成的原因是,MFC 本体架构并没有什么大改 变。《深入浅出MFC》2/e 书中所论之工具及程序代码虽采用VC5+MFC42,仍 适用于目前的VC6+MFC421(唯,工具之画面或功能可能有些微变化)。 由于《深入浅出MFC》2/e 并无简体版,因此我时时收到大陆读者来信询问购 买繁体版之管道。一来我不知道是否台湾出版公司有提供海外邮购或电购,二 来即使有,想必带给大家很大的麻烦,三来两岸消费水平之差异带给大陆读者 的负担,亦令我深感不安。 1
因此,此书虽已出版两年,鉴于仍具阅读与技术上的价值,鉴于繁简转译制作 上的费时费工,鉴于我对同胞的感情,我决定开放此书内容,供各位免费阅读。 我已为《深入浅出MFC 》2/e 制作了PDF 格式之电子文件, 放在 http://www.jjhou.com 供自由下载。北京http://expert.csdn.net/jjhou 有侯捷网站的 一个GBK mirror,各位也可试着自该处下载。 我所做的这份电子书是繁体版,我没有精力与时间将它转为简体。这已是我能 为各位尽力的极限。如果(万一)您看不到文件内容,可能与字形的安装有关- 虽然我已尝试内嵌字形。anyway,阅读方面的问题我亦没有精力与时间为您解 决。请各位自行开辟讨论区,彼此交换阅读此电子书的solution。请热心的读者 告诉我您阅读成功与否,以及网上讨论区(如有的话)在哪里。 曾有读者告诉我,《深入浅出MFC》1/e 简体版在大陆被扫描上网。亦有读者 告诉我,大陆某些书籍明显对本书侵权(详细情况我不清楚)。这种不尊重作 者的行为,我虽感遗憾,并没有太大的震惊或难过。一个社会的进化,终究是 一步一步衍化而来。台湾也曾经走过相同的阶段。但盼所有华人,尤其是我们 从事智能财产行为者,都能够尽快走过灰暗的一面。 在现代科技的协助下,文件影印、文件复制如此方便,智财权之尊重有如「君 子不欺暗室」。没有人知道我们私下的行为,只有我们自己心知肚明。《深入 浅出MFC》2/e 虽免费供大家阅读,但此种作法实非长久之计。为计久长,我 们应该尊重作家、尊重智财,以良好(至少不差)的环境培养有实力的优秀技 术作家,如此才有源源不断的好书可看。 我的近况,我的作品,我的计划,各位可从前述两个网址获得。欢迎各位写信 给我(jjhou@ccca.nctu.edu.tw)。虽然不一定能够每封来函都回复,但是我乐于 知道读者的任何点点滴滴。 2
关于《深入浅出 MFC》2/e 电子书 《深入浅出 MFC》2/e 电子书共有五个档案: 档名內容大小 bytes dissecting MFC 2/e part1.pdf dissecting MFC 2/e part2.pdf dissecting MFC 2/e part3.pdf dissecting MFC 2/e part4.pdf dissecting MFC 2/e part5.pdf chap1~chap3 chap4 chap5~chap7 chap8~chap16 appendix A,B,C,D 3,384,209 2,448,990 2,158,594 5,171,266 1,527,111 每个档案都可个别阅读。每个档案都有书签(亦即目录连接)。每个档案都不 需密码即可打开、选择文字、打印。 请告诉我您的资料 每 一 位下 载此份 电子 书 的朋友 , 我希望 您 写 一 封 email 給 我 (jjhou@ccca.nctu.edu.tw),告诉我您的以下資料,俾让我对我的读者有一些基 本瞭解,谢谢。 姓名: 现职: 毕业学校科系: 年龄: 性別: 居住省份(如是台湾读者,请写县市): 对侯捷的建议: -- the end 3
山高月小 水落石出 山高月小 水落石出 山高月小 山高月小 水落石出 水落石出
深入淺出 MFC (第㆓版 使用 Visual C++ 5.0 & MFC 4.2) Dissecting MFC (Second Edition Using Visual C++ 5.0 & MFC 4.2) 侯俊傑 著 松崗電腦圖資料股份有限公司 印行
Pioneer is the one that an arrow on his back
读者来函 新竹市. 高翠路. 刘嘉均 1996 年11 月,我在书店看到了深入浅出MFC 这本书,让我想起自己曾经暗暗告诉过自 己:Application Framework 真是一个好东西。我在书店驻足察看这本书五分钟之后,我便知 道这本书是一定要买下的。适巧我工作上的项目进度也到了一个即将完成的阶度,所以我便 一口气将这本书给读完了,而且是彻彻底底读了两遍。 我个人特别喜欢第3章:MFC 六大关键技术之仿真。这章内容的设计的确在MFC 丛林中, 大刀阔斧地披露出最重要的筋络,我相信这正是所有学习MFC 的人所需要的一种表明方 式。对我而言,以往遗留的许多疑惑,在此都一一得到了解答。最重要的是,您曾经说过, 学习MFC 的过程中最重要的莫过于自我审视MFC 程序代码的能力。很高兴地,在我看完本书 之后,我确实比以前更有能力来看MFC 源代码了。总之,我为自己能够更深入了解MFC 而 要向您说声谢谢。谢谢您为我们写了深入浅出MFC 这本书。我受益匪浅。 加拿大. 温哥华. 陈宗泰 阁下之书,尚有人性,因此我参而再参,虽不悟,也是enjoyable。看阁下之书的附带效果 是,重燃我追求知识的热情。知也无涯,定慧谈何容易。向阁下致敬:『Kruglinski 的Inside Visual C++ 和Hou 的Dissecting MFC 是通往MFC Programming 的皇家大道』。 i
分享到:
收藏