深入浅出mfc(最新第二版下载-侯捷),中文版:

本书分为四大篇。第一篇提出学习MFC程序设计之前的必要基础,包括Widnows程序的基本观念以及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程序,另成一格。

你需要什么技术基础

你需要什么软硬件环境

让我们使用同一种语言

本书符号习惯

本书例程的取得

范例程序说明

与前版本之差异

如何联络作者

第一篇 勿在浮砂筑高台

第1章 Win32程序基本概念

Win32程序开发流程

需要什么函数库(.LIB)

需要什么头文件(.H)

以消息为基础,以事件驱动之(message based,event driven)

一个具体而微的Win32程序

程序进入点WinMain

窗口类之注册与窗口之诞生

消息循环

窗口的生命中枢:窗口函数

消息映射(Message Map)的雏形

对话框的运行

模块定义文件(.DEF)

资源描述档(.RC)

Widnows程序的生与死

空闲时间的处理:OnIdle

Console程序

Console程序与DOS程序的差别

Console程序的编译链接

JBACKUP:Win32 Console程序设计

MFCCON:MFC Console程序设计

行程与线程(Process and Thread)

核心对象

一个行程的诞生与死亡

产生子行程

一个线程的诞生与死亡

以_beginthreadex取代CreateThread

线程优先级(Priority)

多线程程序设计实例

第2章 C++的重要性质

类及其成员——谈封装(encapsulation)

基类与派生类:谈继承(Inheritance)

this指针

虚拟函数与多态(Polymorphism)

类与对象大解剖

Object slicing与虚拟函数

静态成员(变量与函数)

C++程序的生与死:兼谈构造函数与解构函数

四种不同的对象生存方式(in stack、in heap、global、local static)

执行期类型信息(RTTI)

动态生成(Dynamic Creation)

异常处理(Exception Handling)

Template

Template Functions

Template Classes

Template的编译与链接

第3章 MFC六大关键技术之仿真

MFC类层次结构

Frame 1范例程序

MFC程序的初始化过程

Frame 2范例程序

RTTI(执行期类型识别)

类别型录网与CRuntimeClass

DECLARE_DYNAMIC/IMPLEMENT_DYNAMIC宏

Frame 3范例程序

IsKindOf(类型识别)

Frame 4范例程序

Dynamic Creation(动态生成)

DECLARE_DYNCREATE/IMPLEMENT_DYNCREATE宏

Frame 6范例程序

Persistence(永久保存)机制

Serialize(数据读写)

DECLARE_SERIAL/IMPLEMENT_SERIAL宏

没有范例程序

Message Mapping(消息映射)

Frame 7范例程序

Command Routing(命令传递)

Frame 8范例程序

本章回顾

第二篇 欲善工事先利其器

第4章 Visual C++集成开发环境

安装与组成

四个重要的工具

内务府总管:Visual C++集成开发环境

关于project

关于工具设定

Source Browser

Online Help

调试工具

VC++调试器

Exception Handling

程序代码产生器:AppWizard

东圈西点完成MFC程序骨干

威力强大的资源编辑器

Icon编辑器

Cursor编辑器

Bitmap编辑器

工具栏(Toolbar)编辑器

VERSIONINFO资源编辑器

字符串表格(Accelerator)编辑器

菜单(Menu)编辑器

加速键(Accelerator)编辑器

对话框(Dialog)编辑器

Console程序的项目管理

第三篇 浅出MFC程序设计

第5章 总观Application Framework

什么是Application Framework?

侯捷怎么说

我怎么说

别人怎么说

为什么使用Application Framework

Microsoft Foundation Classes(MFC)

白头宫女话天宝:Visual C++与MFC

纵览MFC

General Purpose classes

CObject

数据处理类(collection classes)

杂项类

异常处理类(exception handling classes)

Windows API classes

Application framework classes

High level Abstractions

Afx全局函数

MFC宏(macros)

MFC数据类型(data types)

第6章 MFC程序的生死因果

不二法门:熟记MFC类的层次结构

需要什么函数库?

需要什么头文件?

简化的MFC程序结构——以Hello MFC为例

Hello程序程序代码

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的选用

CScribbleDoc的修改

文件:一连串的线条

线条与坐标点

Scribble Step 1的View:数据重绘与编辑

CScribbleView的修改

View的重绘操作:GetDocument和OnDraw

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连接对话框与其专用类

对话框的消息处理函数

对话框数据交换与校验(DDX&DDV)

如何唤起对话框

本章回顾

第11章 View功能的加强与重绘效率的提高

同时修改多个Views:UpdateAllViews和OnUpdate

在View中定义一个hint

把hint传给OnUpdate

利用hint增加重绘效率

可卷动的窗口:CScrollView

大窗口中的小窗口:Splitter

切分窗口的功能

切分窗口的程序概念

切分窗口的实现

本章回顾

第12章 打印与预览

概述

打印操作的后台原理

MFC默认的打印机制

Scribble打印机制的增强

打印机的页和文件的页

配置GDI绘图工具

尺寸与方向:关于映射方式(坐标系统)

分页

页眉与页脚

动态计算页码

打印预览(Print Preview)

本章回顾

第13章 多重文件与多重显示

MDI和SDI

多重显示(Multiple Views)

窗口的动态切分

窗口的静态切分

CreateStatic和CreateView

窗口的静态三叉切分

Graph范例程序

静态切分窗口之观念整理

同源子窗口

CMDIFrameWnd::OnWindowNew

Text范例程序

非标准做法的缺点

多重文件

新的Cocument类

新的Document Template

新的UI系统

新文件的档案读写操作

第14章 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对话框的对应类CCustomlDlg

改写OnDismiss虚拟函数,在其中定义macros

修改text template

Top Studio AppWizard执行结果

更多的信息

第16章 站上众人的肩膀——使用Components&activeX Controls

什么是Component Gallery

使用Components

Splash screen

system Info for About Dlg

Tip of the Day

Components实际运用:ComTest程序

修改ComTest程序内容

使用ActiveX Controls

ActiveX Control基础观念:Properties、Methods、Events

ActiveX Controls的五大使用步骤

使用ActiveX Control:OcxTest程序

第五篇 附录

附录A 无责任书评:从摇篮到坟墓Windows的完全学习

无责任书评:MFC四大天王

附录B Scribble Step 5完整原始码

附录C Visual C++5.0MFC范例程序一览

附录D 以MFC重建DBWIN