本书介绍了VC++中基于MFC编程的基础知识,并通过大量的例子,全面地介绍了基于MFC的VC++编程方式。本书内容覆盖了菜单、消息与消息处理、用户输入信息的处理、图形操作、基本绘图和图形显示、CString等通用类的相关知识、单文档视图编程方式、多文档视图编程方式、打印和打印预览、工具条与状态栏和工具提示的使用、对话框的基本知识、基于对话框的编程方式、计时器的使用方法以及文件输入/输出和注册表等内容。
MFC是微软推出的一种面向对象的编程框架,在此框架中,开发环境已经提供了常用程序的基本功能,从而使程序员可专注于程序本身功能部分的开发,可以大大提高程序的开发效率。另外,通过对MFC基类的派生与重载,又可以改变框架原先的执行结果,从而提供了一个开放的架构,使程序员可完全控制计算机,而不会受限于MFC的框架。
本书不是介绍怎样使用C++语言,而是在大家基本掌握了C++语言的基础上,着重讨论怎样使用MFC来编写C++的程序。
本书通过大量实例向读者展示了MFC编程的强大功能,包括最基本的MFC的编程框架、菜单、工具条、单/多文档的编程模式、基于对话框的编程模式、图形处理、用户输入接口、打印和打印预览、对话框、文件输入/输出等内容。
本书共分15章。
第1章为MFC编程概述。该章从MFC的基本概念出发,简单讲述了MFC的设计原理、优点和层次结构,并在1.5节举例说明了怎样用MFC来编写应用程序,目的是使读者对MFC有一个比较清晰的了解,并明白为什么MFC的应用程序开发框架可以减轻程序开发人员的负担。读者也应当对MFC的组织结构有所了解,并熟悉一些常用的MFC类。
第2章介绍了菜单资源。该章全面介绍了有关菜单方面的知识,主要包括菜单的创建和编辑、菜单消息处理、加速键的定义及与窗口的关联、菜单的动态修改和上下文菜单等内容。并通过创建一个LearnMenu工程,系统介绍了菜单相关的知识。
第3章介绍了消息与消息处理。本章首先简单地介绍了Windows的消息驱动模式,在此基础上详细讨论了基于MFC的消息驱动机制、消息映像和消息处理函数等内容。最后,为了加深对消息的理解,举了一个消息处理的例子。
第4章介绍了用户输入信息的处理。该章全面讲解了与用户输入有关的鼠标、键盘操作的基本知识和消息处理机制。最后提供了三个例程:基于Visual C++的MFC编程前言处理鼠标基本消息、更改鼠标指针和键盘消息处理。结合这三个例程,读者应当可以用MFC来处理绝大多数的用户输入信息。
第5章介绍了MFC对图形操作的支持。Windows为操作系统提供了图形用户接口(GUI),并通过定义设备描述表给应用程序提供硬件信息。该章主要介绍MFC的通用设备描述表(CDC)、窗口用户区、整个窗口区(CWindowDC)及元文件(CMetaFileDC)的专用封装类,以简化图形操作。接下来讨论了与绘图相关的MFC所封装的图形对象:画笔(CPen)、画刷(CBrush)、字体(CFont)、位图(CBitmap)、调色板(CPalette)和区域(CRgn)。最后,针对所介绍的内容,提供了一个简单的例程,以供读者参考。
第6章介绍了MFC的基本绘图和图形显示。内容包括GDI坐标系统、基本绘图函数、绘图方式和位图的显示(包括BMP文件的显示)。
第7章介绍了有用的MFC通用类。主要讨论了MFC通用类及它们提供的服务,并对CString类、集合类、诊断服务、日期及时间类进行了简要说明。
第8章介绍了单文档视图编程。详细讨论了文档/视图的编程结构,介绍了编程结构中的应用类、框架类、文档类、视图类、文档模板类。最后通过创建一个十六进制内容查看器,进一步说明了单文档的文档/视图编程结构。
第9章介绍了多文档视图编程。讨论了MFC的多文档编程模式,并提供了一个画图的简单多文档实例。接下来还介绍了与多文档相关的窗口拆分的技术,并提供了示例。
第10章介绍了MFC中的打印和打印预览。详细介绍打印过程中所要用到的6个虚拟函数的功能和重载方法,以及怎样通过重载打印预览和虚拟函数来修改打印预览的高级功能。最后,引导读者编写了一个功能完备的打印程序。
第11章介绍了工具条、状态栏和工具提示。详细介绍各个控件类所提供的类方法,并演示了各个控件的创建方法。最后通过一个实际的例子,进一步说明了这些基本工具控件的使用方法。
第12章介绍了对话框。详细介绍系统提供的6个公用对话框、自定义对话框和对话栏控件。并在最后提供了一个实例,演示了各种对话框的使用方法。
第13章介绍了基于对话框的编程。包括基本框架、可视界面设计、菜单的创建和加载等内容。最后,基于对话框模式开发了一个简单的计算器,以进一步学习相应程序的开发方法。
第14章介绍了计时器的使用。本章在介绍Windows计时器基础知识的基础上,讨论了怎样在MFC中使用计时器,并通过制作一个简单的时钟程序来展示计时器的基本使用方法。
第15章介绍了文件输入/输出与注册表。详细介绍MFC的文件I/O处理所涉及的类:CFile、CMemFile、CSharedFile和CStdioFile等。并详细解释了文件的基本操作方式:创建、打开、读和写文件、复制、移动、换名和删除文件等。最后,对Windows注册表的基本概念做出解释,并设计了一个类来封装Win32 API中有关注册表操作的函数,从而简化注册表的使用。
本书由对MFC编程深有研究的仇谷烽任主编,张京、曹黎明任副主编,另外,沈应逵、张经波、毕研博、张旎、张俊艳、张颖、张媛、赵磊、陈策、张樱、陈胜、徐晓杰、魏永革、李邦龙、刘霞、于华芸、张春丽、伊文琪、王倩、徐杰、孙义晓、杨忠红、于秋生、刘亚男、徐彩霞、冉林仓等也编写了部分内容,在此一并表示感谢。
当然,尽管本书作者经过精心构思、认真编写,但是一定还存在许多不足之处,希望读者提出宝贵意见。
编者
2014年7月
第1章 MFC编程概述
1.1 什么是
1.2 MFC的设计原理
1.3 MFC的优点
1.4 MFC的层次设计
1.4.1 文件服务
1.4.2 窗口
1.4.3 图形
1.4.4 数据库支持
1.5 MFC的Hello World程序
1.6 AppWizard和ClassWizard的用法
1.7 本章小结
第2章 菜单资源
2.1 创建和编辑菜单
2.1.1 创建菜单
2.1.2 编辑菜单
2.1.3 MFC中的菜单消息
2.2 菜单加速键
2.2.1 定义加速键
2.2.2 加速键与窗口的关联
2.3 动态更改菜单
2.3.1 在运行时更改菜单
2.3.2 更改现有弹出菜单
2.4 上下文菜单
2.5 本章小结
第3章 消息与消息处理
3.1 消息与消息处理概述
3.1.1 Windows消息驱动模型
3.1.2 MFC的消息驱动机制
3.2 MFC消息映像和消息处理程序
3.2.1 MFC的消息映像方法
3.2.2 MFC的消息处理
3.2.3 MFC中用户定义的消息处理程序
3.3 消息映像和处理示例
3.4 本章小结
第4章 用户输入信息的处理
4.1 鼠标输入信息的处理
4.1.1 用户区鼠标消息
4.1.2 非用户区鼠标消息
4.1.3 鼠标光标的捕捉
4.1.4 鼠标滚轮及其他与鼠标相关的知识
4.2 键盘处理
4.2.1 键盘消息
4.2.2 虚键代码
4.2.3 检测Shift键状态和切换键
4.2.4 Windows字符集
4.2.5 字符消息
4.3 用户输入处理示例
4.3.1 鼠标消息处理示例
4.3.2 键盘消息处理示例
4.4 本章小结
第5章 MFC对图形操作的支持
5.1 MFC的设备描述表类
5.1.1 CDC类
5.1.2 CPaintDC类
5.1.3 CClientDC类
5.1.4 CWindowDC类
5.1.5 CMetaFileDC类
5.2 图形对象
5.2.1 CPen类
5.2.2 CBrush类
5.2.3 CFont类
5.2.4 CBitmap类
5.2.5 CPalette类
5.2.6 CRgn类
5.3 应用示例
5.4 本章小结
第6章 MFC的基本绘图和图形显示
6.1 GDI坐标系统
6.1.1 逻辑映像方式
6.1.2 建立映像的方式
6.2 基本绘图函数与绘图方式
6.2.1 基本绘图函数
6.2.2 绘图方式
6.2.3 绘图示例
6.3 位图显示
6.3.1 位图基本知识
6.3.2 位图的显示
6.4 应用示例
6.5 本章小结
第7章 有用的MFC通用类
7.1 CString类
7.1.1 与传统C语言字符串的转化
7.1.2 常用字符串操作
7.1.3 字符串的序列化和缓冲区
7.1.4 对Unicode的支持
7.2 集合类
7.2.1 集合类概述
7.2.2 以非模板作为基类的集合类
7.2.3 以模板作为基类的集合类
7.3 诊断服务
7.3.1 通用诊断宏
7.3.2 MFC通用诊断变量和函数
7.3.3 MFC对象诊断函数
7.4 日期和时间类
7.5 本章小结
第8章 单文档视图编程
8.1 文档和视图概述
8.2 MFC的单文档编程
8.2.1 单文档编程的结构
8.2.2 CDocument类
8.2.3 CView类
8.2.4 文档与视图的关联
8.3 一个简单的十六进制查看器
8.4 本章小结
第9章 多文档视图编程
9.1 MFC的多文档编程概述
9.1.1 多文档编程的结构
9.1.2 CMDIFrameWnd类
9.1.3 CMDIChildWnd类
9.1.4 CMDIDocTemplate类
9.2 多文档绘图程序示例
9.3 多文档中的窗口拆分
9.3.1 静态窗口拆分
9.3.2 动态窗口拆分
9.4 动态拆分窗口的示例
9.5 本章小结
第10章 MFC中的打印和打印预览
10.1 打印
10.2 打印预览
10.3 打印示例
10.4 本章小结
第11章 工具条、状态栏和工具提示
11.1 工具条
11.1.1 CToolBar类
11.1.2 CToolBarCtrl类
11.2 状态栏
11.2.1 CStatusBar类
11.2.2 CStatusBarCtrl类
11.3 工具提示
11.4 应用示例
11.5 本章小结
第12章 对话框
12.1 公用对话框
12.1.1 标准公用对话框基类
12.1.2 颜色对话框
12.1.3 文件对话框
12.1.4 查找和替换对话框
12.1.5 字体对话框
12.1.6 打印对话框
12.1.7 页设置对话框
12.2 自定义对话框
12.3 模态对话框和非模态对话框
12.4 对话栏控件
12.5 应用示例
12.6 本章小结
第13章 基于对话框的编程
13.1 创建基于对话框的应用
13.1.1 基于对话框应用程序工程的创建
13.1.2 基于对话框应用程序的框架
13.2 应用界面的可视化设计
13.3 菜单的创建和应用
13.4 设计一个简单的计算器程序
13.4.1 计算器界面的设计
13.4.2 计算器菜单的设计
13.4.3 计算器功能的实现
13.5 本章小结
第14章 计时器的使用
14.1 计时器概述
14.2 应用示例
14.3 本章小结
第15章 文件输入/输出与注册表
15.1 基本文件输入/输出类
15.1.1 CFile类
15.1.2 CMemFile类
15.1.3 CSharedFile类
15.1.4 CStdioFile类
15.2 基本文件操作
15.3 Windows注册表
15.3.1 注册表的组织结构
15.3.2 注册表相关的API
15.3.3 QRegistry类
15.4 本章小结