当前位置:首页 > 工业技术
MFC窗口程序设计
MFC窗口程序设计

MFC窗口程序设计PDF电子书下载

工业技术

  • 电子书积分:15 积分如何计算积分?
  • 作 者:姚领田,高守传等编著
  • 出 版 社:北京:中国水利水电出版社
  • 出版年份:2007
  • ISBN:7508446062
  • 页数:458 页
图书介绍:本书深入浅出,全面地介绍了MFC中窗口程序的设计方法。内容主要包括MFC窗口基类CWnd、框架窗口、文档-视图窗口、分割窗口、控制栏窗口、对话框、属性表窗口以及控件窗口等,最后还对程序设计中的调试技术进行了简要介绍,以帮助读者对程序进行调试。本书内容丰富翔实、讲解细致,对涉及MFC实现理论的部分均进行了较为深入的剖析,并且结合工程实践给出了相应的实现代码,具有较强的针对性,力求让读者通过亲自动手做而掌握使用MFC进行窗口程序设计的方法,学习尽可能多的知识。 本书主要定位于初、中级读者,同时也可用作培训班以及高校师生的参考教材。
《MFC窗口程序设计》目录

第1章 Windows窗口与CWnd对象 1

1.1 窗口和CWnd对象 1

1.2 窗口与CWnd对象的映射关系 1

1.2.1 句柄的概念 1

1.2.2 句柄映射机制 2

1.2.3 关联窗口对象与CWnd类对象 6

1.2.4 从窗口对象获取CWnd类对象 9

1.2.5 解除窗口对象与CWnd类对象的关联 11

1.2.6 临时映射对象的清除 13

1.3 窗口的创建 15

1.3.1 传统的Windows程序设计中的窗口类注册 15

1.3.2 MFC应用的窗口类注册 16

1.3.3 SDI中的窗口创建顺序 21

1.4 窗口的销毁 22

1.4.1 Windows和应用的交互 22

1.4.2 使用CWnd::PostNcDestroy自动销毁 22

1.4.3 销毁窗口对象总结 23

1.5 窗口的编程内容 24

1.5.1 窗口消息传递过程 24

1.5.2 消息映射 26

1.5.3 绘制窗口 26

1.5.4 窗口的设备环境 27

1.6 绘制窗口类CDrawManager 29

1.6.1 CDrawManager成员简介 29

1.6.2 绘制原理 30

1.7 小结 34

第2章 CWnd类综述 35

2.1 CWnd类基础 35

2.2 CWnd类成员函数简介 35

2.2.1 CWnd类成员函数分类 35

2.2.2 构造析构成员函数 36

2.2.3 初始化成员函数 37

2.2.4 对话框项成员函数 39

2.2.5 处理初始化消息的成员函数 41

2.2.6 窗口状态成员函数 42

2.2.7 处理系统消息的成员函数 43

2.2.8 窗口大小和位置有关的成员函数 45

2.2.9 菜单成员函数 48

2.2.10 处理一般消息的成员函数 48

2.2.11 访问窗口的成员函数 55

2.2.12 工具提示成员函数 59

2.2.13 处理控件消息的成员函数 60

2.2.14 处理更新/绘制的成员函数 62

2.2.15 处理输入消息的成员函数 66

2.2.16 处理坐标映射的成员函数 67

2.2.17 处理非客户区消息的成员函数 68

2.2.18 处理窗口文本的成员函数 70

2.2.19 处理窗口消息的成员函数 71

2.2.20 处理滚动的成员函数 72

2.2.21 剪贴板成员函数 73

2.2.22 剪贴板消息处理函数 74

2.2.23 可重载的成员函数 75

2.2.24 脱字符成员函数 77

2.2.25 其他 78

2.3 CWnd派生类 80

2.3.1 框架窗口类 80

2.3.2 视图类 81

2.3.3 对话框类 82

2.3.4 控件类 83

2.3.5 控制条类 85

2.3.6 属性表类 85

2.4 编程实例 85

2.4.1 创建工程 85

2.4.2 添加代码 86

2.5 小结 88

第3章 框架窗口 89

3.1 CFrameWnd成员一览 89

3.1.1 CFrameWnd类数据成员 89

3.1.2 CFrameWnd类构造函数 89

3.1.3 CFrameWnd类初始化函数 90

3.1.4 CFrameWnd类操作函数 91

3.1.5 CFrameWnd类可重载函数 93

3.1.6 CFrameWnd类命令处理函数 94

3.2 SDI框架窗口的创建过程 94

3.2.1 框架窗口的创建 94

3.2.2 使用LoadFrame创建框架窗口 95

3.2.3 使用AfxEndDeferRegisterClass注册窗口类 96

3.2.4 使用GetIconWndClass获取窗口类 97

3.2.5 使用PreCreateWindow注册窗口类 98

3.2.6 使用CFrameWnd::Create创建框架窗口 99

3.2.7 框架窗口子窗口的初始化 101

3.3 SDI框架窗口的销毁 104

3.3.1 响应WM_CLOSE消息 104

3.3.2 销毁Windows窗口对象 106

3.3.3 销毁C++对象 107

3.4 SDI框架窗口对命令消息及控件通知的处理 108

3.4.1 命令消息 108

3.4.2 控件通知 108

3.4.3 框架对WM_COMMAND的处理 109

3.4.4 框架对WM_NOTIFY的处理 114

3.5 MDI框架窗口的创建及销毁 114

3.5.1 SDI与MDI的主要区别 115

3.5.2 主MDI框架窗口的创建 115

3.5.3 MDI客户窗口及其创建 116

3.5.4 MDI子框架窗口的创建 118

3.5.5 框架窗口与MDI客户窗口之间的关系 120

3.5.6 MDI框架窗口的销毁 121

3.6 MDI框架窗口对命令消息的处理 121

3.6.1 主MDI框架窗口的命令处理 121

3.6.2 主MDI框架窗口的命令分发 122

3.6.3 MDI框架窗口的窗口过程 123

3.7 框架窗口的更新机制 124

3.7.1 命令UI类 124

3.7.2 用于更新操作的成员CCmdUI::DoUpdate 125

3.8 框架窗口的客户区管理机制 126

3.9 小结 127

第4章 文档—视图窗口 129

4.1 文档—视图模型 129

4.1.1 文档—视图模型简介 129

4.1.2 文档—视图类 130

4.1.3 CView的派生类 130

4.1.4 创建工程 131

4.2 文档—视图重要成员 131

4.2.1 文档成员 131

4.2.2 视图成员 133

4.3 对象的创建 135

4.3.1 创建模板对象 135

4.3.2 创建文档对象 136

4.3.3 创建框架对象 139

4.3.4 创建视图对象 140

4.3.5 各对象间的关系 143

4.4 文档—视图的初始化和清除 145

4.4.1 初始化和清除的时机 145

4.4.2 初始化和清除的过程 146

4.5 命令消息在视图窗口中的分发过程 146

4.5.1 视图窗口对命令消息的处理 146

4.5.2 文档类对命令消息的处理 147

4.5.3 命令消息的处理函数的调用过程 148

4.6 视图窗口的使用 150

4.6.1 在视图中绘制 150

4.6.2 通过视图解释用户输入 151

4.6.3 多视图窗口 151

4.7 定制控件视图 152

4.7.1 指导思想 152

4.7.2 具体实现 152

4.8 编程实例 153

4.8.1 资源编辑 154

4.8.2 为工程添加新类 154

4.8.3 主框架实现 155

4.8.4 列表视图实现 158

4.8.5 表单视图实现 159

4.8.6 地址栏实现 161

4.9 小结 163

第5章 分割窗口 164

5.1 窗口分割 164

5.2 CSplitterWnd类 165

5.2.1 CSplitterWnd类成员一览 165

5.2.2 创建动态分割窗口 167

5.2.3 创建静态分割窗口 170

5.2.4 创建分割窗口的窗格 171

5.2.5 设置窗格信息 173

5.2.6 绘制分割窗口的组件 174

5.2.7 绘制拖动分割条 176

5.3 分割窗口中的通信机制 177

5.3.1 有文档相连的视图之间的通信 178

5.3.2 无文档视图与文档关联视图之间的通信 178

5.3.3 无文档关联视图之间的通信 178

5.3.4 任意视图之间的通信 179

5.4 分割窗口中的命令路由 179

5.4.1 通过文档对象路由视图窗口 179

5.4.2 通过分割窗口路由视图窗口 180

5.4.3 通用路由方法 181

5.5 编程实例 181

5.5.1 工程的创建 181

5.5.2 分割窗口的创建 182

5.5.3 自定义分割窗口类CSplitterWndEx 184

5.5.4 位图信息窗格 189

5.5.5 原始位图窗格 196

5.5.6 处理后位图窗格 197

5.6 位图类 199

5.6.1 位图 199

5.6.2 位图类 199

5.7 小结 202

第6章 控制栏窗口 203

6.1 控制栏综述 203

6.1.1 控制栏简介 203

6.1.2 CControlBar类成员 203

6.1.3 控制栏布局算法 206

6.1.4 控制栏对消息的处理 209

6.1.5 布局算法应用实例 214

6.2 对话条窗口 215

6.2.1 工程的创建 215

6.2.2 对话条窗口的创建 216

6.2.3 对话条窗口的UI对象更新 219

6.2.4 接收来自主菜单或工具栏的命令消息 219

6.2.5 对话条实例分析 220

6.3 伸缩栏窗口 222

6.3.1 类CReBar和CReBarCtrl 223

6.3.2 CReBar成员介绍 223

6.3.3 在Rebar控件中使用对话条 224

6.3.4 伸缩栏的UI对象更新 225

6.3.5 伸缩栏实例分析 225

6.4 工具栏窗口 226

6.4.1 工具栏窗口简介 226

6.4.2 工具栏成员一览 227

6.4.3 工具栏窗口的创建 227

6.4.4 在工具栏中使用图像列表 230

6.4.5 在工具栏中使用下拉按钮 230

6.4.6 工具栏窗口的UI对象更新 232

6.4.7 在工具栏上显示文本 233

6.4.8 在工具栏上创建控件 235

6.4.9 工具栏热点按钮的切换 239

6.5 状态栏窗口 239

6.5.1 状态栏窗口简介 240

6.5.2 状态栏成员一览 240

6.5.3 状态栏窗口的创建 241

6.5.4 为状态栏添加窗格 242

6.5.5 状态栏窗口的UI对象更新 243

6.5.6 在状态栏上创建控件 244

6.5.7 状态栏中的消息响应 246

6.5.8 改变状态栏的大小 247

6.6 主框架对控制栏的控制 248

6.6.1 工具箱的显隐 248

6.6.2 工具箱的布局 248

6.6.3 工具箱和对话条的通信 249

6.7 小结 250

第7章 对话框 251

7.1 对话框及MFC相关类 251

7.1.1 对话框与CDialog类 251

7.1.2 工程的创建 252

7.2 模态对话框 254

7.2.1 添加对话框及其类 254

7.2.2 创建模态对话框 256

7.2.3 模态对话框消息循环 264

7.2.4 模态的终结 268

7.3 非模态对话框 270

7.3.1 添加对话框及其类 270

7.3.2 创建非模态对话框 271

7.3.3 模态对话框与非模态对话框的区别 273

7.4 对话框数据交换和验证 273

7.4.1 CDataExchange类简介 273

7.4.2 数据交换和验证 274

7.5 对话框中更新机制的实现 277

7.5.1 CWnd::UpdateDialogControls成员 278

7.5.2 使用WM_KICKIDLE钩子实现UI更新 280

7.5.3 在模态检测ContinueModal中实现UI更新 281

7.5.4 按钮和编辑控件更新的实现 281

7.6 对话框背景及背景透明的控件 282

7.6.1 设置对话框的背景颜色 283

7.6.2 设置对话框背景位图 283

7.6.3 绘制对话框背景 285

7.6.4 对话框控件透明背景的实现 287

7.6.5 MFC处理对话框及其控件颜色和背景的实现 288

7.7 为对话框添加工具栏 289

7.7.1 创建工具栏 290

7.7.2 为工具栏添加提示信息 290

7.7.3 控制工具栏的显隐状态 292

7.8 为对话框添加状态栏 292

7.8.1 创建状态栏 293

7.8.2 设置状态栏窗格信息 293

7.8.3 控制状态栏的显隐状态 296

7.8.4 状态栏中系统时间的更新方法 296

7.9 为对话框添加菜单 297

7.10 对话框中特定键的处理 298

7.11 对话框扩展与收缩 300

7.12 控件在对话框中的应用 302

7.12.1 “关于”对话框的滚动字幕控件 302

7.12.2 显示Gif图片的控件 302

7.13 其他实现 303

7.14 小结 303

第8章 属性表窗口 304

8.1 属性表相关类 304

8.2 属性表类 304

8.2.1 属性表类简介 304

8.2.2 属性表类成员 305

8.3 属性页类 309

8.3.1 属性页类简介 309

8.3.2 重要成员函数介绍 310

8.4 创建属性表 312

8.4.1 创建模态属性表 313

8.4.2 创建非模态属性表 313

8.5 处理“应用”按钮 314

8.5.1 属性表处理 314

8.5.2 属性页处理 315

8.6 在对话框中使用属性表 316

8.6.1 工程的创建 316

8.6.2 工程资源的添加 318

8.6.3 属性表类实现 319

8.6.4 “一般信息”页编程 319

8.6.5 “类信息”页编程 325

8.6.6 主对话框窗口编程 326

8.7 树形属性表的实现 332

8.7.1 工程的创建 333

8.7.2 CPropPageFrame类 334

8.7.3 CTreePropSheet类 334

8.7.4 属性表“应用”按钮的编程 335

8.7.5 属性页编程 336

8.7.6 属性表接口编程 336

8.8 扩展属性表类——CTreePropSheet 338

8.8.1 属性表的初始化 338

8.8.2 树形控件中属性页项的创建和填充 342

8.8.3 结束当前属性页 345

8.8.4 响应树形控件中属性页项的变化 346

8.8.5 更新属性页的标题 347

8.9 小结 349

第9章 控件窗口 350

9.1 控件窗口 350

9.1.1 控件窗口的创建 352

9.1.2 派生公共控件窗口 353

9.2 动画控件 354

9.2.1 CAnimateCtrl类 354

9.2.2 动画控件的使用 355

9.2.3 动画控件的局限 357

9.3 按钮控件 358

9.3.1 按钮控件的风格类型 358

9.3.2 CButton类 358

9.3.3 CBitmapButton类 360

9.3.4 按钮控件的通知消息 360

9.4 组合框/扩展组合框控件 361

9.4.1 组合框/扩展组合框的风格类型 361

9.4.2 CcomboBox类 362

9.4.3 CComboBoxEx类 366

9.4.4 扩展组合框与图像列表 367

9.5 时间提取器/月历控件 368

9.5.1 时间提取器/月历控件的风格类型 368

9.5.2 CDateTimeCtrl类 369

9.5.3 CMonthCalCtrl类 371

9.6 图像列表控件 373

9.6.1 CImageList类 373

9.6.2 图像列表的类型 374

9.6.3 图像列表的编程 374

9.7 编辑控件/静态控件 375

9.7.1 编辑控件/静态控件的风格类型 376

9.7.2 CEdit类 377

9.7.3 CStatic类 379

9.8 Rich Edit控件 381

9.8.1 Rich Edit控件基础 381

9.8.2 CRichEditCtrl类 381

9.8.3 Rich Edit控件实例 384

9.9 列表框/进度条控件 388

9.9.1 列表框/进度条控件的风格类型 389

9.9.2 CListBox类 390

9.9.3 CProgressCtrl类 392

9.9.4 编程实例 393

9.10 滑块/调节钮控件 394

9.10.1 滑块/调节钮控件的风格类型 394

9.10.2 CSliderCtrl类 395

9.10.3 CSpinButtonCtrl类 397

9.11 滚动条控件 399

9.11.1 滚动条控件的风格类型 399

9.11.2 CScrollBar类 400

9.12 列表/表头控件 401

9.12.1 列表/表头控件的风格类型 402

9.12.2 CListCtrl类 404

9.12.3 CHeaderCtrl类 412

9.13 树形控件 416

9.13.1 树形控件的风格类型 416

9.13.2 CTreeCtrl类 416

9.14 标签/IP控件 423

9.14.1 标签控件的风格类型 423

9.14.2 CTabCtrl类 424

9.14.3 CIPAddressCtrl类 428

9.15 小结 429

第10章 程序调试 430

10.1 基础知识 430

10.1.1 基本概念 432

10.1.2 Debug版本调试环境配置 432

10.1.3 Release版本调试环境配置 433

10.2 设置/取消断点 433

10.2.1 位置断点的设置 434

10.2.2 数据断点的设置 436

10.2.3 消息断点的设置 439

10.2.4 断点的取消 439

10.3 跟踪程序执行 440

10.4 状态查看工具 440

10.4.1 变量窗口 441

10.4.2 查看窗口 441

10.4.3 寄存器窗口 442

10.4.4 内存窗口 442

10.4.5 调用堆栈 442

10.4.6 反汇编窗口 443

10.4.7 调试信息泡泡窗口 444

10.4.8 快速查看变量窗口 444

10.5 调试宏与函数 445

10.5.1 断言宏 445

10.5.2 跟踪宏 446

10.5.3 打印对象 447

10.6 小结 448

附录 SDI应用的消息循环 449

A.1 主循环过程 449

A.2 空闲处理 451

A.3 消息的处理 453

A.3.1 消息的获取与分发 453

A.3.2 消息的预处理 454

A.3.3 空闲处理状态的维护 455

A.4 结束主循环 456

参考文献 458

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