-
真正的侯捷《深入浅出mfc》chm版下载
资源介绍
目 录
第0章 你一定要知道(导读)/1
这本书适合谁/1
你需要什么技术基础/1
你需要什么软硬件环境
让我们使用同一种语言
本书符号习惯/3
磁盘内容与安装
范例程序说明
第一篇 勿在浮砂筑高台 - 本书技术前提/3
第1章 Win32 程序基本观念/3
Win32程序开发流程/4
需要什么函数库(.LIB)/4
需要什么头文件(.H)/4
以消息为基础,以事件驱动之/5
一个具体而微的Win32 程序/5
程序进入点WinMain/10
窗口类之注册与窗口之诞生/11
消息循环/12
窗口的生命中枢—窗口函数/12
消息映射(Message Map)雏形/13
对话框的运作/14
模块定义文件(.DEF)/14
资源描述文件(.RC) /15
Windows 程序的生与死/15
闲置时间的处理:OnIdle /16
Console 程序/17
Console 程序与 DOS 程序的差别/17
Console 程序的编译链接/18
JBACKUP:Win32 Console 程序设计/19
MFCCON:MFC Console 程序设计/20
什么是C Runtime Library 的多线程版本/22
进程与线程(Process and Thread)/22
核心对象/22
一个进程的诞生与死亡/23
产生子进程/23
一个线程的诞生与死亡/24
以_beginthreadex取代CreateThread/25
线程优先权(Priority)/26
多线程程序设计实例/27
第2章 C++ 的重要性质 /29
类及其成员—谈封装(encapsulation)/29
基类与派生类—谈继承(Inheritance)/29
this 指针 /31
虚函数与多态(Polymorphism)/32
类与对象大解剖 /40
Object slicing 与虚函数 /42
静态成员(变量与函数) /44
C++程序的生与死:兼谈构造函数与析构函数 /46
四种不同的对象生存方式 /47
所谓“Unwinding”/48
运行时类型信息(RTTI) /48
动态生成(Dynamic Creation) /50
异常处理(Exception Handling) /50
Template /53
Template Functions /53
Template Classes /54
Templates 的编译与链接 /56
第3章 MFC六大关键技术之模拟/57
MFC类阶层/57
Frame1范例程序/57
MFC程序的初始化过程/59
Frame2范例程序/61
RTTI(运行时类型辨识)/65
CRuntimeClass与类型录网 /65
DECLARE_DYNAMIC / IMPLEMENT_DYNAMIC宏/66
Frame3 范例程序/71
IsKindOf(类型辨识)/77
Frame4 范例程序/77
Dynamic Creation(动态生成)/78
DECLARE_DYNCREATE / IMPLEMENT_DYNCREATE 宏 /79
Frame6 范例程序 /84
Persistence(永续生存)机制 /91
Serialize(数据读写) /91
DECLARE_SERIAL/IMPLEMENT_SERIAL 宏 /95
没有范例程序
Message Mapping(消息映射)/97
Frame7 范例程序/104
Command Routing(命令循环)/112
Frame8 范例程序/119
本章回顾/130
第二篇 欲善工事先利其器- Visual C++ 5.0 开发工具
第4章 Visual C++ - 整合性软件开发环境
安装与组成
四个重要的工具
内务府总管: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 /130
什么是Application Framework /130
侯捷怎么说 /130
我怎么说 /131
别人怎么说 /133
为什么使用 Application Framework /134
Microsoft Foundation Class(MFC) /136
白头宫女话天宝:Visual C++与MFC/137
纵览MFC /138
General Purpose classes /138
Windows API classes /139
Application framework classes /140
High level abstractions /140
Afx全局函数 /140
MFC宏(macros) /141
MFC数据类型(data type)/142
第6章 MFC程序设计导论——MFC程序的生死因果 /144
不二法门:熟记MFC类的阶层架构 /144
需要什么函数库(.LIB) /146
需要什么含入文件(.H) /146
简化的MFC程序架构—以Hello MFC为例 /148
Hello 程序原始代码 /148
MFC 程序的来龙去脉 /152
我只借用两个类:CWinApp和CFrameWnd /152
CWinApp—取代WinMain的地位 /152
CFrameWnd—取代WndProc的地位 /154
引爆器—Application object /155
隐晦不明的 WinMain /156
AfxWinInit - AFX 内部初始化动作 /158
CWinApp::InitApplication /160
CMyWinApp::InitInstance /160
CFrameWnd::Create 产生主窗口(并注册窗口类)/161
奇怪的窗口类名称 Afx:b:14ae:6:3e8f/168
窗口显示与更新 /170
CWinApp::Run - 程序生命的活水源头/170
把消息与处理函数串接在一起:Message Map机制/172
来龙去脉总整理/173
Callback 函数/174
闲置时间(idle time)的处理:OnIdle/176
Dialog 与 Control/178
通用对话框(Common Controls)/178
本章回顾/179
第7章 简单而完整:MFC 骨干程序/180
不二法门:熟记 MFC 类的阶层架构/180
MFC程序的UI新风貌/180
Document/View 支撑你的应用程序 /181
利用Visual C++工具完成Scribble step0 /183
骨干程序使用哪些MFC类?/183
Document Template的意义 /187
Scribble的Document/View 设计/190
主窗口的诞生/192
工具列和状态列的诞生(Toolbar & Status bar)/193
鼠标拖放(Drag and Drop)/195
消息映射(Message Map)/196
标准菜单File/Edit/View/Window/Help/196
对话框 /199
改用CEditView /199
第四篇 深入MFC程序设计 /199
第8章 Document-View 深入探讨 /200
为什么需要 Document-View(形而上)/200
Document /200
View /201
Document Frame(View Frame)/202
Document Template /202
CDocTemplate 管理 CDocument / CView / CFrameWnd /202
Scribble Step1 的 Document(数据结构设计) /207
MFC Collection Classes 的选用 /207
Template-Based Classes /208
Template-Based Classes 的使用方法 /209
CScribbleDoc 的修改 /209
SCRIBBLEDOC.H /211
SCRIBBLEDOC.CPP /212
文件:一连串的线条 /215
CScribbleDoc 的成员变量 /215
CObList /215
CScribbleDoc 的成员函数 /215
线条与坐标点 /217
CStroke 的成员变量 /217
CArray /217
CStroke 的成员函数 /217
Scribble Step1 的 View:数据重绘与编辑 /218
CScribbleView 的修改 /218
SCRIBBLEVIEW.H /219
SCRIBBLEVIEW.CPP /220
View 的重绘动作—GetDocument和OnDraw /222
CScribbleView的成员变量 /222
CScribbleView的成员函数 /223
View 与使用者的交谈(鼠标消息处理实例)/223
ClassWizard 的辅佐 /224
WizardBar 的辅佐 /225
Serialize:对象的文件读写 /225
Serialization以外的文件读写动作 /226
台面上的Serialize动作 /227
台面下的Serialize写文件奥秘 /231
台面下的Serialize读文件奥秘 /233
DYNAMIC / DYNCREATE / SERIAL 三宏/240
Serializable 的必要条件/244
CObject 类/245
IsKindOf/245
IsSerializable/245
CObject::Serialize/245
CArchive类/246
operator<<和operator>>/246
效率考虑/250
自定 SERIAL宏给抽象类使用 /250
在CObList中加入 CStroke 以外的类 /250
Document与View 交流—为Scribble Step4做准备/254
第9章 消息映射与命令循环 /255
到底要解决什么 /255
消息分类 /256
万流归宗 Command Target(CCmdTarget)/256
三个奇怪的宏,一张巨大的网 /257
DECLARE_MESSAGE_MAP 宏/257
消息映射网的形成:BEGIN_/ON_/END_ 宏 /258
米诺托斯(Minotauros)与西修斯(Theseus)/261
两万五千里长征—消息的流窜 /265
直线上溯(一般 Windows 消息) /265
拐弯上溯(WM_COMMAND 命令消息) /268
罗塞达碑石:AfxSig_xx 的秘密/273
Scribble Step2:UI 对象的变化/277
改变菜单/277
改变工具列/278
利用ClassWizard连接命令项识别代码与命令处理函数/280
维护UI对象状态(UPDATE_COMMAND_UI)/282
本章回顾/285
第10章 MFC 与对话框/285
对话框编辑器/286
利用ClassWizard 连接对话框与其专属类/288
PENDLG.H /290
PENDLG.CPP /291
对话框的消息处理函数 /292
MFC中各式各样的MAP /294
对话框数据交换与查核(DDX & DDV)/294
MFC中各式各样的DDx_函数 /297
如何唤起对话框 /297
本章回顾 /299
第11章 View功能之加强与重绘效率之提升/299
同时修改多个 Views:UpdateAllViews 和 OnUpdate/300
在View中定义一个 hint/302
把hint传给 OnUpdate/304
利用hint增加重绘效率/305
可卷动的窗口:CScrollView /307
大窗口中的小窗口:Splitter /313
分裂窗口的功能 /313
分裂窗口的程序概念/314
分裂窗口之实现/315
本章回顾 /317
第12章 印表与预览/317
概观/317
打印动作的后台原理 /320
MFC预设的打印机制 /324
Scribble打印机制的补强 /333
打印机的页和文件的页 /333
配置GDI绘图工具 /334
尺寸与方向:关于映射模式(坐标系统)/334
分页/336
表头(Header)与表尾/338
动态计算页代码/338
打印预览(Print Preview)/339
本章回顾/339
第13章 多重文件与多重显示 /339
MDI 和 SDI /340
多重显像(Multiple Views) /340
窗口的动态分裂 /342
窗口的静态分裂 /343
CreateStatic 和 CreateView /343
窗口的静态三叉分裂 /345
Graph 范例程序 /346
静态分裂窗口之观念整理 /354
同源子窗口 /355
CMDIFrameWnd::OnWindowNew/355
Text 范例程序 /356
非制式作法的缺点 /361
多重文件 /361
新的Document类 /362
新的Document Template /363
新的UI系统 /364
新文件的文件读写动作 /365
第14章 MFC多线程程序设计(Multi-threaded Programming in MFC)/367
从操作系统层面看线程/367
三个观念:模块、进程、线程/367
线程优先权(Priority) /368
线程排程(Scheduling) /369
Thread Context /370
从程序设计层面看线程 /371
Worker Threads 和UI Threads /371
错误观念 /372
正确态度 /372
MFC多线程程序设计 /372
探索CwinThread/372
产生一个Worker Thread/374
产生一个UI Thread /375
线程的结束/376
线程与同步控制 /376
MFC多线程程序实例 /378
第15章 定制一个AppWizard /380
到底Wizard是什么? /381
Custom AppWizard 的基本操作 /381
剖析AppWizard Components /385
Dialog Templates 和Dialog Classes /385
Macros /386
Directives /387
动手修改Top Studio AppWizard/387
利用资源编辑器修改IDD_CUSTOM1对话窗画面/387
利用ClassWizard 修改CCustom1Dlg类 /388
改写OnDismiss 虚函数,在其中定义macros /389
修改text template/389
Top Studio AppWizard执行结果/390
更多的信息/390
第16章 站上众人的肩膀—使用Components和ActiveX Controls/391
什么是Component Gallery /391
使用 Components /393
Splash screen /393
System Info for About Dlg /394
Tips of the Day /394
Components实际运用:ComTest 程序/395
修改ComTest 程序内容 /409
使用ActiveX Controls /411
ActiveX Control 基础观念:Properties、Methods、Events/411
ActiveX Controls 的五大使用步骤/412
使用“Grid”ActiveX Control:OcxTest 程序/413