当前位置:首页 > 工业技术
Visual C++权威剖析 MFC的原理、机制与开发实例
Visual C++权威剖析 MFC的原理、机制与开发实例

Visual C++权威剖析 MFC的原理、机制与开发实例PDF电子书下载

工业技术

  • 电子书积分:15 积分如何计算积分?
  • 作 者:辛长安,王颜国编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2008
  • ISBN:7302170207
  • 页数:478 页
图书介绍:本书介绍Visual C++类库MFC原理、机制与开发实例。
《Visual C++权威剖析 MFC的原理、机制与开发实例》目录

第1篇 C++关键语法及其在MFC中的应用第1章 重载 2

1.1 函数重载 2

1.1.1 问题的提出 2

1.1.2 如何区分重载函数 2

1.1.3 重载函数使用实例 3

1.1.4 编译器调用重载函数的规则 4

1.1.5 在父类和子类中定义重载函数 5

1.2 运算符重载 7

1.2.1 运算符重载的定义 7

1.2.2 运算符重载的特点 8

1.2.3 将运算符重载为友元和成员函数 9

1.2.4 operator调用形式 11

1.2.5 重载运算符的相关问题 12

1.3 函数重载在MFC中的应用举例 15

1.4 运算符重载在MFC中的应用举例 16

第2章 虚拟函数 18

2.1 问题的提出:静态联编与动态联编 18

2.2 引入虚拟函数 20

2.2.1 实例:定义虚拟函数 20

2.2.2 实例:编写通用函数 21

2.2.3 实例:定义主函数 21

2.3 虚拟函数的实现机制 22

2.3.1 类和对象的内存分配机制 22

2.3.2 基类与派生类的内存分配关系 23

2.3.3 非虚拟函数的内存分配机制 25

2.3.4 深入:虚拟函数的内存分配机制 25

2.4 虚拟函数的应用 27

2.4.1 不改变父类的代码,可以改变父类的行为 28

2.4.2 不知道对象的类型,可以执行对象的特定操作 30

2.4.3 如果类包含虚拟成员函数,则将此类的析构函数也定义为虚拟函数 37

2.5 纯虚拟函数 39

2.6 虚拟函数在MFC中的应用举例 41

第3章 静态成员和类模板 43

3.1 静态成员 43

3.1.1 C语法中的静态变量 43

3.1.2 C++中的静态成员变量 44

3.1.3 静态成员函数 46

3.1.4 静态成员变量在MFC中的应用举例 47

3.1.5 静态成员函数在MFC中的应用举例 48

3.2 类模板 49

3.2.1 问题的提出 49

3.2.2 类模板的定义 51

3.2.3 使用类模板和模板类 58

3.2.4 模板在MFC中的应用举例 62

第4章 多重继承和内嵌类 64

4.1 继承方式与访问权限 64

4.1.1 派生类的继承权限 64

4.1.2 在基类中定义数据成员的原则 65

4.1.3 以公有方式派生子类 66

4.2 多重继承和虚拟基类 67

4.2.1 一个例子 67

4.2.2 多重继承的二义性 68

4.2.3 使用虚拟基类解决二义性问题 70

4.2.4 使用虚拟基类需要注意的问题 71

4.3 内嵌类与类合成 74

4.3.1 内嵌类的定义 74

4.3.2 内嵌类的使用方法 75

4.3.3 内嵌类的应用价值 77

4.3.4 类合成 85

4.4 类继承与类合成的应用 86

4.4.1 构造初始化和赋值操作 86

4.4.2 继承与合成的选择 90

4.5 多重继承和内嵌类在COM中的应用 92

第2篇 MFC核心机制 98

第5章 MFC类结构 98

5.1 CObject类 99

5.1.1 支持类诊断 99

5.1.2 提供运行时类信息 102

5.1.3 支持类的连载 106

5.2 CCmdTarget类 108

5.3 CWinThread类 109

5.3.1 虚函数InitInstance 110

5.3.2 虚函数Run 110

5.3.3 虚函数ExitInstance 112

5.4 CWnd类 112

5.4.1 绘制窗口 112

5.4.2 操作窗口子控件 113

5.4.3 窗口定时器 113

5.4.4 窗口消息的相关函数 113

5.4.5 默认的消息处理函数 113

第6章 CWnd类与Windows窗口的关系 116

6.1 使用WIN32 API创建窗口 116

6.2 亲自动手创建窗口封装类 119

6.2.1 实例代码 119

6.2.2 原理分析 132

6.3 CWnd类如何封装Windows窗口 132

6.3.1 使用操作映射的函数 132

6.3.2 CWnd如何处理窗口消息 134

第7章 CWnd的派生类 137

7.1 CFrameWnd类 137

7.1.1 CFrameWnd的创建 137

7.1.2 管理视图对象 139

7.1.3 管理控制条 140

7.1.4 分发命令消息 141

7.1.5 必要的消息处理 142

7.2 CView类 142

7.2.1 关联文档对象 142

7.2.2 视图的绘制 143

7.2.3 虚函数virtual void OnUpdate(CView* pSender,LPARAM,CObject*) 144

7.2.4 虚函数virtual void OnInitialUpdate() 144

7.2.5 虚函数virtual void CalcWindowRect(LPRECT lpClientRect,UINT nAdjustType) 144

7.2.6 虚函数virtual void PostNcDestroy(); 145

7.2.7 虚函数virtual BOOL OnCmdMsg(UINT,int,void*,AFX CMDHANDLERINFO*) 145

7.2.8 虚函数virtual void OnActivateView(BOOL,CView*,CView*) 146

7.3 CDialog类 146

7.4 模态对话框的消息循环 146

7.4.1 模态对话框的创建与模式循环 147

7.4.2 结束模式循环 150

7.4.3 创建普通的模态窗口 151

7.5 对话框的命令路由 151

第8章 窗口操作 153

8.1 检索窗口 153

8.1.1 根据标题和窗口类查找窗口 153

8.1.2 根据窗口的相对位置或所属关系查找窗口 154

8.1.3 检索窗口的应用 155

8.2 屏幕坐标与客户区坐标 157

8.3 窗口之间的层次关系 158

8.3.1 窗口实例的信息结构 158

8.3.2 桌面窗口(第一层窗口) 158

8.3.3 顶级窗口(第二层窗口) 158

8.3.4 子窗口(第三层以下窗口) 159

8.3.5 重叠窗口与弹出窗口的区别 159

8.4 父窗口与子窗口 159

8.4.1 子窗口的刷新 159

8.4.2 子窗口的显示设备上下文 160

8.4.3 处理WM_CTLCOLOR消息 161

8.4.4 顶级窗口向子窗口转发系统消息 162

8.4.5 子窗口向父窗口发送通知消息 163

8.4.6 父窗口向子窗口发送反射消息 164

8.4.7 检索父窗口 165

8.5 Windows窗口类 166

8.5.1 窗口类的结构 167

8.5.2 系统定义的窗口类 169

8.6 窗口的子类化和超类化 170

8.6.1 实例子类化和全局子类化 170

8.6.2 子类化的规则与局限 172

8.6.3 使用超类化代替子类化 173

第9章 消息映射与消息处理 174

9.1 MFC的消息映射 174

9.1.1 消息映射机制 174

9.1.2 消息映射的宏定义 176

9.2 非窗口消息:命令消息 179

9.2.1 命令ID 179

9.2.2 命令消息映射项宏定义 179

9.3 非窗口消息:通知消息 180

9.3.1 通过WM_COMMAND发送的通知消息 180

9.3.2 WM_NOTIFY通知消息与ON_NOTIFY宏 180

9.3.3 几个特殊的通知消息 182

9.4 非窗口消息:反射消息 183

9.5 非窗口消息:非窗口消息的传递路由 184

9.6 非窗口消息:非窗口消息的扩展 197

9.6.1 处理对象扩展 197

9.6.2 发送对象扩展 198

第10章 特殊消息和处理函数 200

10.1 空闲消息处理 200

10.1.1 UI线程的空闲处理 200

10.1.2 主框架窗口的空闲处理 202

10.1.3 对话框的空闲处理 203

10.2 命令状态更新消息 203

10.2.1 命令状态更新的实现机制 203

10.2.2 在主框架窗口中实现命令状态更新 205

10.2.3 在对话框中实现命令状态更新 206

10.3 使用OnCmdMsg()函数分发非窗口消息 211

第3篇 窗口编程 216

第11章 控件子窗口 216

11.1 控件的创建 216

11.1.1 使用API函数创建控件 216

11.1.2 使用MFC封装类创建控件 217

11.1.3 使用对话框模板创建控件 219

11.2 控件的子类化 220

11.3 控件的属主画与自定义画概述 223

11.4 属主画消息处理和虚拟函数 223

11.4.1 属主画消息的处理 224

11.4.2 属主画反射消息的处理实例 225

11.4.3 自画虚拟函数DrawItem() 226

11.4.4 自画虚拟函数MeasureItem() 227

11.4.5 自画虚拟函数CompareItem() 227

11.4.6 自画虚拟函数DeleteItem() 228

11.5 几个控件的属主画特性 228

11.5.1 LISTBOX的属主画特性 228

11.5.2 BUTTON的属主画特性 231

11.5.3 COMBOBOX的属主画特性 234

11.5.4 LISTCTRL的属主画特性 237

11.6 控件的自定义绘图 237

11.6.1 绘制方式 237

11.6.2 CDDS_PREPAINT阶段 239

11.6.3 CDDS_ITEMPOSTPAINT阶段 240

第12章 自定义控件 242

12.1 窗口类 242

12.2 通知消息 244

12.3 绘制 245

12.4 分隔条控件 246

12.4.1 基本功能 246

12.4.2 控件的封装类以及相应函数代码 247

第13章 开发使用控制条 255

13.1 为控制条按需分配客户区 255

13.1.1 API函数HDWP::BeginDeferWindowPos() 255

13.1.2 API函数HDWP DeferWindowPos() 256

13.1.3 API函数BOOL EndDeferWindowPos() 256

13.1.4 具体代码 256

13.2 控制条基类CControlBar 259

13.2.1 绘制控制条 259

13.2.2 空闲处理 262

13.2.3 向父窗口传递特殊消息 263

13.2.4 操作控制条风格 264

13.3 控制条的停靠与浮动 265

13.3.1 控制条的停靠 265

13.3.2 控制条的浮动 268

13.4 实现停靠浮动子窗口 271

第14章 工具栏和菜单优化 281

14.1 添加按钮文本 281

14.2 创建工具栏的子控件 283

14.3 动态创建菜单 287

14.3.1 菜单封装类CMenu 287

14.3.2 编辑菜单条目 289

14.3.3 为窗口关联主菜单 291

14.3.4 创建浮动的弹出菜单 292

14.4 菜单的属主画 293

14.4.1 菜单的属主画机制 293

14.4.2 菜单的自画实现机制 293

14.4.3 自绘弹出菜单 295

第15章 单文档和多文档编程 303

15.1 CWinApp类全局对象 303

15.2 注册表和INI文件操作 304

15.3 命令行参数处理 305

15.3.1 MFC预定义的参数 305

15.3.2 自定义命令行参数 308

15.4 单文档(SDI)模板框架 309

15.4.1 构造文档模板类 310

15.4.2 命令行参数的解析与处理 311

15.4.3 直接创建相应对象的成员函数 313

15.4.4 单文档非拆分视图的切换 315

15.5 多文档(MDI)模板框架 317

15.5.1 概述 317

15.5.2 MDI主框架窗口的创建过程 318

15.5.3 MDI主框架窗口的消息传递 321

15.5.4 CMDIChildWnd子框架 322

15.6 CDocument类的文档管理功能 324

15.6.1 文档对象的连载 324

15.6.2 新建文件 325

15.6.3 打开文件 325

15.6.4 保存文件 327

15.6.5 关闭文件 328

15.6.6 文档的“修改”标志 330

15.6.7 文档对象与文档模板实例及视图的关联 330

第16章 编写多框架的应用程序 333

16.1 创建多框架的必要性 333

16.2 自动创建的多框架程序 334

16.2.1 一个实例 334

16.2.2 多框架的秘密 337

16.3 改进自动创建的多框架程序 339

16.3.1 通过文档模板指针改进程序 339

16.3.2 重载CWinApp::OnFileNew()接口改进程序 340

16.4 手工创建多框架程序 344

16.5 拆分视图:认识CSplitterWnd类 349

16.5.1 概述 349

16.5.2 动态拆分和静态拆分 350

16.6 应用CView::OnCreate()消息处理函数实现拆分 353

16.7 创建非视图的拆分子窗口 355

16.8 拆分视图的创建删除和隐藏显示 357

第4篇 高级技术 364

第17章 屏幕绘图 364

17.1 基类CDC 364

17.1.1 CDC类的封装机制 364

17.1.2 应用CDC类绘图 366

17.2 CWindowDC与CClientDC 367

17.3 WM_PAINT窗口消息与CPaintDC类 370

17.3.1 窗口的无效区域产生WM_PAINT窗口消息 370

17.3.2 设置设备上下文的剪裁区 370

17.3.3 绘图前处理WM_ERASEBKGND消息 371

17.3.4 主动刷新窗口绘图 371

17.3.5 WM_PAINT消息的发送时机 371

17.3.6 在WM_PAINT消息处理中使用CPaintDC类 371

17.4 使用设备上下文的剪裁区提高刷新效率 373

17.4.1 通过设备上下文的当前路径选择剪裁区域 373

17.4.2 通过区域对象选择剪裁区域 374

17.4.3 为曲线选择剪裁区域 374

17.4.4 定时刷新曲线的程序示例 375

第18章 打印 383

18.1 准备打印设备和打印参数 383

18.2 单页打印 385

18.3 分页打印 387

18.4 调整图文打印尺寸 394

18.5 窗口的自动打印 397

18.5.1 自动打印的消息处理 397

18.5.2 自动打印客户区和非客户区 398

第19章 多线程的创建与控制 404

19.1 工作者线程和界面线程 404

19.1.1 创建工作者线程 404

19.1.2 用户界面线程与消息循环 407

19.1.3 主线程与辅线程 407

19.1.4 用户界面线程的创建 409

19.2 线程和进程的优先级 417

19.2.1 进程的优先级类 418

19.2.2 线程的优先级别 418

19.2.3 线程优先级值 419

19.3 线程的终止 419

19.3.1 线程的正常终止 419

19.3.2 线程的强行终止 420

19.4 线程间的互斥 420

19.4.1 临界区 421

19.4.2 互斥 422

19.5 线程间的同步 425

19.5.1 线程之间的间接制约和直接制约 425

19.5.2 线程的同步运行 425

19.6 线程间的资源共享 428

19.6.1 共享对象句柄 428

19.6.2 共享对象句柄的操作局限 429

19.6.3 共享MFC对象 430

19.6.4 多线程示例 431

第20章 操作Web网页 438

20.1 了解HTML超文本标记语言 438

20.2 DHTML的定义 439

20.2.1 窗口对象 440

20.2.2 事件对象 440

20.2.3 子框架对象 441

20.2.4 屏幕对象 441

20.2.5 文档对象 441

20.2.6 全集对象(all) 441

20.2.7 集合对象 442

20.3 了解JavaScript和VBScript脚本语言 442

20.4 将Web浏览器嵌入应用程序 443

20.4.1 使用MSIE ActiveX控件 443

20.4.2 应用CHtmlView视图类 445

20.5 操作单框架网页元素 447

20.5.1 COM接口与DHTML对象的关系 447

20.5.2 访问文档元素 448

20.5.3 访问单框架文档元素的程序示例 450

20.6 操作多框架网页元素 453

第21章 异常处理 460

21.1 C++异常处理 460

21.1.1 异常处理的关键字 460

21.1.2 不进行异常处理的代码 460

21.1.3 增加异常处理代码以后 462

21.2 结构化异常处理 464

21.3 异常处理中的资源释放 465

21.3.1 局部对象的自动析构 465

21.3.2 抛出对象的释放处理 466

21.3.3 必要的资源清理和系统复位 468

21.3.4 清理没有捕获的异常 469

21.4 何时使用异常处理 469

21.4.1 集中处理错误信息 469

21.4.2 化简返回值的传递过程 470

21.4.3 在构造函数中抛出异常 470

21.5 MFC的异常处理 470

21.5.1 MFC的异常类CException 470

21.5.2 MFC的CException派生类:CArchiveException 472

21.5.3 MFC的CException派生类:CFileException 473

21.5.4 MFC的CException派生类:CDBException、CDaoException 475

21.5.5 MFC的CException派生类:CResourceException、CUserException、CMemoryException、CNotSupportException 475

21.5.6 自定义CException的派生类 475

相关图书
作者其它书籍
返回顶部