MFC的原理、机制与开发实例

副标题:无

作   者:辛长安,王颜国编著

分类号:

ISBN:9787302170204

微信扫一扫,移动浏览光盘

简介

   本书为清华大学出版社所出版的《VC++编程技术与难点剖析》的第2版   。本书以C++语法和MFC类库编程的重点、难点内容为主线,从实践应用的   角度,结合经典的实例阐述C++类的特性,深入剖析VC++,特别是MFC编程   的体系结构,使有初级基础的读者能够快速掌握VC++的MFC程序设计思想和   C++的语言精华。    全书共分4篇21章。第1篇阐述C++的关键语法,包括重载、虚拟函数、   静态成员、类模板、多重继承和内嵌类等内容;第2篇介绍MFC的核心机制   ,重点剖析窗口封装类CWnd及其派生类,以及Windows窗口操作的相关内容   ,阐释了MFC的消息映射与消息处理机制;第3篇讲解了窗口编程,包括自   定义控件、优化程序界面以及如何控制MFC的文档/视图框架结构(包括单   文档、多文档、视图拆分等);第4篇是高级技术篇,讲解了屏幕绘图、打   印、多线程编程、Web编程以及异常处理技术。    本书并非泛讲VC++编程基础的入门教材,因此适合有一定VC++学习经   验或编程基础的读者。   

目录

目录
第1篇 C++关键语法及其在MFC中的应用
第1章 重载
1.1 函数重载
1.1.1 问题的提出
1.1.2 如何区分重载函数
1.1.3 重载函数使用实例
1.1.4 编译器调用重载函数的规则
1.1.5 在父类和子类中定义重载函数
1.2 运算符重载
1.2.1 运算符重载的定义
1.2.2 运算符重载的特点
1.2.3 将运算符重载为友元和成员函数
1.2.4 operator调用形式
1.2.5 重载运算符的相关问题
1.3 函数重载在MFC中的应用举例
1.4 运算符重载在MFC中的应用举例
第2章 虚拟函数
2.1 问题的提出:静态联编与动态联编
2.2 引入虚拟函数
2.2.1 实例:定义虚拟函数
2.2.2 实例:编写通用函数
2.2.3 实例:定义主函数
2.3 虚拟函数的实现机制
2.3.1 类和对象的内存分配机制
2.3.2 基类与派生类的内存分配关系
2.3.3 非虚拟函数的内存分配机制
2.3.4 深入:虚拟函数的内存分配机制
2.4 虚拟函数的应用
2.4.1 不改变父类的代码,可以改变父类的行为
2.4.2 不知道对象的类型,可以执行对象的特定操作
2.4.3 如果类包含虚拟成员函数,则将此类的析构函数也定义为虚拟函数
2.5 纯虚拟函数
2.6 虚拟函数在MFC中的应用举例
第3章 静态成员和类模板
3.1 静态成员
3.1.1 C语法中的静态变量
3.1.2 C++中的静态成员变量
3.1.3 静态成员函数
3.1.4 静态成员变量在MFC中的应用举例
3.1.5 静态成员函数在MFC中的应用举例
3.2 类模板
3.2.1 问题的提出
3.2.2 类模板的定义
3.2.3 使用类模板和模板类
3.2.4 模板在MFC中的应用举例
第4章 多重继承和内嵌类
4.1 继承方式与访问权限
4.1.1 派生类的继承权限
4.1.2 在基类中定义数据成员的原则
4.1.3 以公有方式派生子类
4.2 多重继承和虚拟基类
4.2.1 一个例子
4.2.2 多重继承的二义性
4.2.3 使用虚拟基类解决二义性问题
4.2.4 使用虚拟基类需要注意的问题
4.3 内嵌类与类合成
4.3.1 内嵌类的定义
4.3.2 内嵌类的使用方法
4.3.3 内嵌类的应用价值
4.3.4 类合成
4.4 类继承与类合成的应用
4.4.1 构造初始化和赋值操作
4.4.2 继承与合成的选择
4.5 多重继承和内嵌类在COM中的应用
第2篇 MFC核心机制
第5章 MFC类结构
5.1 CObject类
5.1.1 支持类诊断
5.1.2 提供运行时类信息
5.1.3 支持类的连载
5.2 CCmdTarget类
5.3 CWinThread类
5.3.1 虚函数InitInstance
5.3.2 虚函数Run
5.3.3 虚函数ExitInstance
5.4 CWnd类
5.4.1 绘制窗口
5.4.2 操作窗口子控件
5.4.3 窗口定时器
5.4.4 窗口消息的相关函数
5.4.5 默认的消息处理函数
第6章 CWnd类与Windows窗口的关系
6.1 使用WIN32 API创建窗口
6.2 亲自动手创建窗口封装类
6.2.1 实例代码
6.2.2 原理分析
6.3 CWnd类如何封装Windows窗口
6.3.1 使用操作映射的函数
6.3.2 CWnd如何处理窗口消息
第7章 CWnd的派生类
7.1 CFrameWnd类
7.1.1 CFrameWnd的创建
7.1.2 管理视图对象
7.1.3 管理控制条
7.1.4 分发命令消息
7.1.5 必要的消息处理
7.2 CView类
7.2.1 关联文档对象
7.2.2 视图的绘制
7.2.3 虚函数virtual void OnUpdate(CView* pSender,LPARAM,CObject*)
7.2.4 虚函数virtual void OnInitialUpdate()
7.2.5 虚函数virtual void CalcWindowRect(LPRECT lpClientRect,UINTnAdjustType)
7.2.6 虚函数virtual void PostNcDestroy()
7.2.7 虚函数virtual BOOL OnCmdMsg(UINT,int,void*,AFX_CMDHANDLERINFO*)
7.2.8 虚函数virtual void OnActivateView(BOOL,CView*,CView*)
7.3 CDialog类
7.4 模态对话框的消息循环
7.4.1 模态对话框的创建与模式循环
7.4.2 结束模式循环
7.4.3 创建普通的模态窗口
7.5 对话框的命令路由
第8章 窗口操作
8.1 检索窗口
8.1.1 根据标题和窗口类查找窗口
8.1.2 根据窗口的相对位置或所属关系查找窗口
8.1.3 检索窗口的应用
8.2 屏幕坐标与客户区坐标
8.3 窗口之间的层次关系
8.3.1 窗口实例的信息结构
8.3.2 桌面窗口(第一层窗口)
8.3.3 顶级窗口(第二层窗口)
8.3.4 子窗口(第三层以下窗口)
8.3.5 重叠窗口与弹出窗口的区别
8.4 父窗口与子窗口
8.4.1 子窗口的刷新
8.4.2 子窗口的显示设备上下文
8.4.3 处理WM_CTLCOLOR消息
8.4.4 顶级窗口向子窗口转发系统消息
8.4.5 子窗口向父窗口发送通知消息
8.4.6 父窗口向子窗口发送反射消息
8.4.7 检索父窗口
8.5 Windows窗口类
8.5.1 窗口类的结构
8.5.2 系统定义的窗口类
8.6 窗口的子类化和超类化
8.6.1 实例子类化和全局子类化
8.6.2 子类化的规则与局限
8.6.3 使用超类化代替子类化
第9章 消息映射与消息处理
9.1 MFC的消息映射
9.1.1 消息映射机制
9.1.2 消息映射的宏定义
9.2 非窗口消息:命令消息
9.2.1 命令ID
9.2.2 命令消息映射项宏定义
9.3 非窗口消息:通知消息
9.3.1 通过WM_COMMAND发送的通知消息
9.3.2 WM_NOTIFY通知消息与ON_NOTIFY宏
9.3.3 几个特殊的通知消息
9.4 非窗口消息:反射消息
9.5 非窗口消息:非窗口消息的传递路由
9.6 非窗口消息:非窗口消息的扩展
9.6.1 处理对象扩展
9.6.2 发送对象扩展
第10章 特殊消息和处理函数
10.1 空闲消息处理
10.1.1 UI线程的空闲处理
10.1.2 主框架窗口的空闲处理
10.1.3 对话框的空闲处理
10.2 命令状态更新消息
10.2.1 命令状态更新的实现机制
10.2.2 在主框架窗口中实现命令状态更新
10.2.3 在对话框中实现命令状态更新
10.3 使用OnCmdMsg()函数分发非窗口消息
第3篇 窗口编程
第11章 控件子窗口
11.1 控件的创建
11.1.1 使用API函数创建控件
11.1.2 使用MFC封装类创建控件
11.1.3 使用对话框模板创建控件
11.2 控件的子类化
11.3 控件的属主画与自定义画概述
11.4 属主画消息处理和虚拟函数
11.4.1 属主画消息的处理
11.4.2 属主画反射消息的处理实例
11.4.3 自画虚拟函数DrawItem()
11.4.4 自画虚拟函数MeasureItem()
11.4.5 自画虚拟函数CompareItem()
11.4.6 自画虚拟函数DeleteItem()
11.5 几个控件的属主画特性
11.5.1 LISTBOX的属主画特性
11.5.2 BUTTON的属主画特性
11.5.3 COMBOBOX的属主画特性
11.5.4 LISTCTRL的属主画特性
11.6 控件的自定义绘图
11.6.1 绘制方式
11.6.2 CDDS_PREPAINT阶段
11.6.3 CDDS_ITEMPOSTPAINT阶段
第12章 自定义控件
12.1 窗口类
12.2 通知消息
12.3 绘制
12.4 分隔条控件
12.4.1 基本功能
12.4.2 控件的封装类以及相应函数代码
第13章 开发使用控制条
13.1 为控制条按需分配客户区
13.1.1 API函数HDWP::BeginDeferWindowPos()
13.1.2 API函数HDWP DeferWindowPos()
13.1.3 API函数BOOL EndDeferWindowPos()
13.1.4 具体代码
13.2 控制条基类CControlBar
13.2.1 绘制控制条
13.2.2 空闲处理
13.2.3 向父窗口传递特殊消息
13.2.4 操作控制条风格
13.3 控制条的停靠与浮动
13.3.1 控制条的停靠
13.3.2 控制条的浮动
13.4 实现停靠浮动子窗口
第14章 工具栏和菜单优化
14.1 添加按钮文本
14.2 创建工具栏的子控件
14.3 动态创建菜单
14.3.1 菜单封装类CMenu
14.3.2 编辑菜单条目
14.3.3 为窗口关联主菜单
14.3.4 创建浮动的弹出菜单
14.4 菜单的属主画
14.4.1 菜单的属主画机制
14.4.2 菜单的自画实现机制
14.4.3 自绘弹出菜单
第15章 单文档和多文档编程
15.1 CWinApp类全局对象
15.2 注册表和INI文件操作
15.3 命令行参数处理
15.3.1 MFC预定义的参数
15.3.2 自定义命令行参数
15.4 单文档(SDI)模板框架
15.4.1 构造文档模板类
15.4.2 命令行参数的解析与处理
15.4.3 直接创建相应对象的成员函数
15.4.4 单文档非拆分视图的切换
15.5 多文档(MDI)模板框架
15.5.1 概述
15.5.2 MDI主框架窗口的创建过程
15.5.3 MDI主框架窗口的消息传递
15.5.4 CMDIChildWnd子框架
15.6 CDocument类的文档管理功能
15.6.1 文档对象的连载
15.6.2 新建文件
15.6.3 打开文件
15.6.4 保存文件
15.6.5 关闭文件
15.6.6 文档的“修改”标志
15.6.7 文档对象与文档模板实例及视图的关联
第16章 编写多框架的应用程序
16.1 创建多框架的必要性
16.2 自动创建的多框架程序
16.2.1 一个实例
16.2.2 多框架的秘密
16.3 改进自动创建的多框架程序
16.3.1 通过文档模板指针改进程序
16.3.2 重载CWinApp::OnFileNew()接口改进程序
16.4 手工创建多框架程序
16.5 拆分视图:认识CSplitterWnd类
16.5.1 概述
16.5.2 动态拆分和静态拆分
16.6 应用CView::OnCreate()消息处理函数实现拆分
16.7 创建非视图的拆分子窗口
16.8 拆分视图的创建删除和隐藏显示
第4篇 高级技术
第17章 屏幕绘图
17.1 基类CDC
17.1.1 CDC类的封装机制
17.1.2 应用CDC类绘图
17.2 CWindowDC与CClientDC
17.3 WM_PAINT窗口消息与CPaintDC类
17.3.1 窗口的无效区域产生WM_PAINT窗口消息
17.3.2 设置设备上下文的剪裁区
17.3.3 绘图前处理WM_ERASEBKGND消息
17.3.4 主动刷新窗口绘图
17.3.5 WM_PAINT消息的发送时机
17.3.6 在WM_PAINT消息处理中使用CPaintDC类
17.4 使用设备上下文的剪裁区提高刷新效率
17.4.1 通过设备上下文的当前路径选择剪裁区域
17.4.2 通过区域对象选择剪裁区域
17.4.3 为曲线选择剪裁区域
17.4.4 定时刷新曲线的程序示例
第18章 打印
18.1 准备打印设备和打印参数
18.2 单页打印
18.3 分页打印
18.4 调整图文打印尺寸
18.5 窗口的自动打印
18.5.1 自动打印的消息处理
18.5.2 自动打印客户区和非客户区
第19章 多线程的创建与控制
19.1 工作者线程和界面线程
19.1.1 创建工作者线程
19.1.2 用户界面线程与消息循环
19.1.3 主线程与辅线程
19.1.4 用户界面线程的创建
19.2 线程和进程的优先级
19.2.1 进程的优先级类
19.2.2 线程的优先级别
19.2.3 线程优先级值
19.3 线程的终止
19.3.1 线程的正常终止
19.3.2 线程的强行终止
19.4 线程间的互斥
19.4.1 临界区
19.4.2 互斥
19.5 线程间的同步
19.5.1 线程之间的间接制约和直接制约
19.5.2 线程的同步运行
19.6 线程间的资源共享
19.6.1 共享对象句柄
19.6.2 共享对象句柄的操作局限
19.6.3 共享MFC对象
19.6.4 多线程示例
第20章 操作Web网页
20.1 了解HTML超文本标记语言
20.2 DHTML的定义
20.2.1 窗口对象
20.2.2 事件对象
20.2.3 子框架对象
20.2.4 屏幕对象
20.2.5 文档对象
20.2.6 全集对象(all)
20.2.7 集合对象
20.3 了解JavaScript和VBScript脚本语言
20.4 将Web浏览器嵌入应用程序
20.4.1 使用MSIE ActiveX控件
20.4.2 应用CHtmlView视图类
20.5 操作单框架网页元素
20.5.1 COM接口与DHTML对象的关系
20.5.2 访问文档元素
20.5.3 访问单框架文档元素的程序示例
20.6 操作多框架网页元素
第21章 异常处理
21.1 C++异常处理
21.1.1 异常处理的关键字
21.1.2 不进行异常处理的代码
21.1.3 增加异常处理代码以后
21.2 结构化异常处理
21.3 异常处理中的资源释放
21.3.1 局部对象的自动析构
21.3.2 抛出对象的释放处理
21.3.3 必要的资源清理和系统复位
21.3.4 清理没有捕获的异常
21.4 何时使用异常处理
21.4.1 集中处理错误信息
21.4.2 化简返回值的传递过程
21.4.3 在构造函数中抛出异常
21.5 MFC的异常处理
21.5.1 MFC的异常类CException
21.5.2 MFC的CException派生类:CArchiveException
21.5.3 MFC的CException派生类:CFileException
21.5.4 MFC的CException派生类:CDBException、CDaoException
21.5.5 MFC的CException派生类:CResourceException、CUserException、CMemoryException、CNotSupportException
21.5.6 自定义CException的派生类

已确认勘误

次印刷

页码 勘误内容 提交人 修订印次

MFC的原理、机制与开发实例
    • 名称
    • 类型
    • 大小

    光盘服务联系方式: 020-38250260    客服QQ:4006604884

    意见反馈

    14:15

    关闭

    云图客服:

    尊敬的用户,您好!您有任何提议或者建议都可以在此提出来,我们会谦虚地接受任何意见。

    或者您是想咨询:

    用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问

    Video Player
    ×
    Audio Player
    ×
    pdf Player
    ×
    Current View

    看过该图书的还喜欢

    some pictures

    解忧杂货店

    东野圭吾 (作者), 李盈春 (译者)

    亲爱的云图用户,
    光盘内的文件都可以直接点击浏览哦

    无需下载,在线查阅资料!

    loading icon