《MFC开发 Windows 95/NT 4应用程序》PDF下载

  • 购买积分:21 如何计算积分?
  • 作  者:(美)Peter Norton,Rob McGregor
  • 出 版 社:北京:清华大学出版社
  • 出版年份:1998
  • ISBN:7302029342
  • 页数:779 页
图书介绍:

第1部分 Win32与面向对象编程 1

第1章 面向对象编程与软件的可重用性 1

1.1.1 从过程编程到面向对象编程 1

1.1 面向对象编程综述 1

1.1.2 继承(Inheritance) 3

1.1.3 多态(Polymorphism)和虚拟方法(Virtual Methods) 5

1.3 C++中的对象和类 6

1.2 C++:对象连接(Object Connection) 6

1.3.1 构造函数(Constructors)与析构函数(Destructors) 8

1.4 代码重用(code Reuse)的优点 8

1.6 模板 9

1.5 类库 9

1.4.1 停止重复开发 9

1.7.1 动态链接库(DLLs) 10

1.7 对象构件 10

1.7.2 Visual Basic Extensions(VBXs) 11

1.7.3 OLE Control Extensions(OCXs) 11

1.8 小结 11

2.2 剖析程序 13

第2章 剖析Windows SDK程序 13

2.1 面向对象Windows之前 13

2.3 什么是Windows窗口 14

2.4 Windows软件开发工具包(SDK) 14

2.5 Windows应用程序设计接口(API) 15

2.5.1 Win16和Win32API 15

2.6 事件驱动程序设计和消息循环 16

2.6.1 事件驱动模型 16

2.7 WinMain( )函数 19

2.8 窗口过程 20

2.8.1 窗口类和窗口样式 21

2.8.2 模块定义文件 22

2.9 最小的SDK Windows程序 23

2.9.1 剖析程序 27

2.9.2 处理窗口过程中的消息 28

2.10 修订的最小SDK Windows程序 30

2.10.1 流线型的WinMain( ) 33

2.10.2 用Init Application( )初始化和注册窗口类 33

2.11 小结 34

2.10.3 用InitInstance( )创建应用程序窗口 34

3.1 新的Windows Shell 35

第3章 Windows编程问题 35

3.1.1 Explorer 35

3.2 Windows中的新概念 37

3.2.1 进程与线程 37

3.2.2 线程同步 38

3.2.3 内存映像文件 38

3.2.4 线程本地存储 38

3.3 动态链接库 39

3.2.5 信箱和管道 39

3.4.5 进度栏控件 40

3.4.4 列表视图控件 40

3.4.3 图像列表控件 40

3.4.2 热键控件 40

3.4.1 动画控件 40

3.4 Windows公用控件 40

3.4.6 多功能编辑控件 41

3.4.7 滑动控件 42

3.4.8 旋转按钮控件 42

3.4.9 状态栏控件 42

3.4.10 标记控件 43

3.4.11 工具栏控件 43

3.5 Windows NT兼容性 44

3.4.12 工具提示控件 44

3.4.13 树型视图控件 44

3.5.1 体面降级 45

3.6 小结 46

第4章 内存管理 47

4.1.1 栈分配 47

4.1 MFC内的内存管理 47

4.1.2 堆分配 48

4.2 32位内存页式管理 48

4.2.1 32位地址空间和Windows 95内存范围(arenas) 48

4.2.2 32位地址空间和Windows NT内存管理 50

4.3 虚拟内存管理 51

4.3.2 页映像 51

4.3.1 分页文件 51

4.3.3 空闲、保留和占用虚存 52

4.3.4 页状态 52

4.4 分配页 53

4.4.1 Virtual Alloc( )函数 53

4.5 内存一映像文件 54

4.4.3 其他虚页函数 54

4.4.2 保护页 54

4.6.1 文件对象 55

4.6 内存一映像文件的实现 55

4.6.2 文件一映像对象 55

4.6.3 文件视图映像 56

4.7 小结 57

第5章 Microsoft基本类库引论 58

5.1 MFC前的AFX 58

5.1.1 Application Framework(AFX) 58

5.1.3 MFC的演变 59

5.1.2 返回到绘图板 59

5.3 在MFC内使用New Shell公用控件 60

5.2 了解MFC设计要点 60

5.4 硬件平台可移植性 60

5.5 文档/视图结构 61

5.6 MFC类层次 61

5.7 CObject类:MFC的根 62

5.7.1CObject服务 62

5.7.2 CObject类方法 63

5.8.1 数据、列表和映像类 64

5.8 从CObject派生的MFC子系统 64

5.8.6 控件支持 65

5.8.5 Windows Sockets(插件)和Internet服务类 65

5.8.4 文件和数据库类 65

5.8.3 图形类 65

5.8.2 调试和异常类 65

5.8.7 菜单 66

5.8.8 MFC应用程序结构类和同步类 66

5.9 文档和视图 68

5.9.1 文档模板 68

5.9.2 窗口、对话框和控件类 69

5.10 非CObject派生的MFC子系统 71

5.10.1 OLE类 72

5.10.3 支持类 72

5.10.2 简单数据类型类 72

5.10.4 同步类 73

5.10.5 类型模板类 73

5.11 两级对象构造 73

5.12 最小MFC程序:MINMFC1 74

5.13 小结 75

6.1 事件驱动程序设计 77

第6章 消息与消息处理 77

6.1.1 方法与消息 77

6.2 了解消息 77

6.2.1 MFC内的WinMain( ) 77

6.2.3 系统定义的消息 80

6.2.2 消息结构 80

6.2.4 用户定义的消息 81

6.2.5 隐藏消息循环 81

6.3 应用程序类简介:CWinApp 84

6.4.1 窗口消息 85

6.3.1 全局应用程序对象Helper函数 85

6.4 消息处理程序 85

6.4.2 控制通知消息 86

6.4.3 命令消息 86

6.5 消息映像 86

6.5.1 透明地映像消息 86

6.6 消息映像项与消息处理方法 89

6.6.1 命令消息处理程序 89

6.6.2 子窗口通知消息处理程序 90

6.6.3 Windows消息处理程序 92

6.6.4 用户定义的消息处理程序 97

6.7 样本程序:最小消息映像App(MINMFC2) 98

6.8 小结 100

第7章 处理用户输入 101

7.1 鼠标处理 101

7.1.1 用户区鼠标消息 101

7.1.2 鼠标捕捉 102

7.1.3 非用户区鼠标消息 105

7.2 键盘处理 106

7.2.1 键盘消息 107

7.2.2 虚键代码 108

7.2.3 检测Shift状态和切换键 109

7.2.4 Windows的字符键 110

7.2.5 字符消息 111

7.3 样本程序:鼠标和键盘键入(MOUSEKEY) 112

7.3.1 检验应用程序头文件(MOUSEKEY.H) 113

7.3.2 实现MOUSEKEY程序(MOUSEKDY.CPP) 114

7.4 小结 118

第8章 设备描述表和图形对象 120

8.1 设备描述表 120

8.1.1 图形设备接口 120

8.2 MFC设备描述表类 120

8.2.1 基类:CDC 121

8.2.2 用类CPaintDC绘画 124

8.2.3 用类CClientDC管理用户区 125

8.2.4 用类CWindowDC管理框架窗口 126

8.2.5 具有类CMetaFileDC的Windows元文件 127

8.3 图形对象 128

8.3.1 笔:类CPen 129

8.3.2 刷子:类CPrush 131

8.3.3 字体:类CFont 132

8.3.5 调色板:类CPalette 133

8.3.4 位图:类CBitmap 133

8.3.6 区域:类CRgn 134

8.4 小结 135

9.1 GDI坐标系统 136

第9章 矢量图形和正文 136

9.1.1 逻辑映像方式 137

9.1.2 建立映像方式 137

9.1.3 CDC矢量图形方法 139

9.1.4 绘图方式 139

9.1.5 点 140

9.1.6 绘制点 141

9.1.7 线和多边形 142

9.1.8 矩形 145

9.1.9 区域 149

9.1.10 多边形 151

9.1.11 Bezier曲线 151

9.1.12 元文件 153

9.2 字体和正文 157

9.2.2 TEXTMETRIC结构 157

9.2.1 字体特征 157

9.2.3 LOGFONT结构 160

9.2.4 字体创建 161

9.2.5 绘制正文 162

9.3 样本程序:矢量图形和正文方法(VECTEXT1.EXE) 164

9.4 小结 165

10.1 光栅图形 166

第10章 光栅图形和调色板 166

10.1.1 位图 166

10.1.2 设备相关位图(DDBs) 167

10.1.3 设备无关位图(DIBs) 168

10.1.4 CBitmap类 168

10.1.6 传送和扭曲位图 169

10.1.5 已命名的光栅操作(Named Raster Operations-ROPs) 169

10.1.7 样本应用程序:RASTER1.EXE 171

10.2 调色板和调色板管理 172

10.2.1 颤动 173

10.2.2 硬件调色板 173

10.2.3 系统调色板 173

10.2.4 逻辑调色板 174

10.2.5 类CPalette 175

10.2.7 样本程序:PALETTE1.EXE 179

10.2.6 调色板消息 179

10.3 小结 183

第11章 有用的通用类 184

11.1 字符串:使用类CString 184

11.1.1 与C风格字符串兼容 184

11.1.2 字符串赋值、连接、比较和析取 185

11.1.3 字符串的序列化和缓冲区 187

11.1.4 Unicode支持 187

11.2 集合类 188

11.2.1 集合形 188

11.2.2 非样板为基集合类 188

11.2.3 样板为基的集合类 189

11.3 诊断服务 190

11.3.1 通用诊断宏 190

11.3.2 MFC通用诊断变量和函数 191

11.4 日期和时间类 192

11.3.3 MFC对象诊断函数 192

11.5 小结 193

12.1扩展MFC功能性 195

12.2.1 CMainFrame类界面:MAINFRAM.H 195

12.2 自定义框架窗口基类:CMainFrame 195

第12章 定义你自己的类 195

12.2.2初始化子窗口CreateChiled-Controls( ) 198

12.2.3 确定框架窗口的中心:Center-Window( ) 198

12.2.4 封装Win32API函数:GetWindows VerInfo( ) 199

12.2.5 显示Windows 版本信息:Show Windows VerInfo( ) 200

12.2.7 取用户区高宽:GetHeight( ) 202

12.2.8 将整数转换为字符串:IntTo-String( ) 202

12.2.9 将字符串转换为整数:StringTo-Int( ) 202

12.2.6 取用户区宽度:Get Width( ) 202

12.2.10 设置默认窗口颜色:SetClient-Backcolor( ) 203

12.2.11 用RGB颜色绘制用户区:Set-ClientColorRGB( ) 203

12.2.12 调整窗口背景涂色:OnErase-Bkgnd( ) 204

12.2.13 改变窗口的字体:SetWndFont( ) 204

12.2.14 改变子控件字体:SetChildFonts( ) 205

12.3 小结 205

13.1 应用程序对象的作用 207

第13章 框架窗口、文档及视图 207

13.2 框架窗口对象 208

13.2.1 框架窗口基类:CFrame Wnd 209

13.2.2 窗口构造 210

13.3 文档 211

13.3.1 文档基类CDocument 211

13.4 视图 212

13.4.1 增强的CView派生类 213

13.5.1 把类组合在一起 214

13.5 文档模板 214

13.5.2 文档模板基类:CDoc Template 215

13.5.3 创建文档模板 216

13.5.4 文档模板字符串 216

13.6 文档/视图消息传递 217

13.6.1 命令发送 217

13.6.2 默认命令标识符及处理程序 219

13.7 样本程序:最小的文档/视图应用程序(DOCVIEW1.EXE) 220

13.7.1 应用程序类 221

13.7.2 文档类 224

13.7.3 框架窗口类 225

13.7.4 视图类 226

13.8 小结 228

14.1 打印 230

14.1.2 打印循环:CView::OnFilePrint( ) 230

14.1.1 设备无关性 230

第14章 打印和打印预览 230

14.1.3 准备打印 231

14.1.4 CPrintInfo类结构 232

14.1.5 Print对话框 233

14.1.6 开始打印作业 234

14.1.7 准备打印设备描述表 234

14.1.8 打印作业 234

14.1.9 清除 235

14.2 打印预览 235

14.2.1 CView::OnFilePrintPreview( )内部结构 235

14.3 样本程序 236

14.3.1 增加打印及打印预览 236

14.3.2 调用打印预览 239

14.4 小结 239

第15章 按钮和滚动控件 241

15.1 按钮控件:CButton类和CBitMapButton类 242

15.1.1 按钮样式 243

15.1.2 CButton和CBitmapButton类结构 245

15.1.3 CButton和CBitmapButton消息 245

15.1.5 创建和初始化按钮 247

15.1.6 样本程序:使用每一种按钮样式 248

18.2 动画控件:类CAnimateCtrl 249

15.2 微调(spin)控件:CSpinButtonCtrl类 254

15.2.1 微调控件样式 255

15.2.2 CSpinButtonCtrl类结构 256

15.2.3 CSpinButtonCtrl消息 256

15.2.5 创建及初始化微调控件 257

15.2.4 CSpinButtonCtrl类方法 257

15.3 滚动条:CScrollBar类 260

15.3.1 滚动条样式 262

15.3.2 CScrollBar类结构 262

15.3.3 CScrollBar消息 263

15.3.4 CScrollBar类方法 264

15.3.5 创建和初始化滚动条 265

15.3.6 样本程序:滚动条 266

15.4 滑动控件:CSliderCtrl类 272

15.4.2 CSliderCtrl类结构 273

15.4.1 滑动控件样式 273

15.4.3 CSliderCtrl消息 274

15.4.4 CSliderCtrl类方法 275

15.4.5 创建和初始化滑动控件 276

15.4.6 样本程序:滑动控件(SLIDERI) 277

15.5 小结 278

16.1 列表框控件:CListBox类 280

第16章 列表框、编辑和组合框控件 280

16.1.1 列表框样式 281

16.1.2 CListBox类结构 282

16.1.4 CListBox类方法 284

16.1.3 CListBox消息 284

16.1.5 创建和初始化CListBox对象 287

16.1.6 样本程序:单选项和多选项文件列表框 287

16.1.7 自绘列表框 292

16.2 编辑控件:CEdit类 293

16.2.1 编辑控件样式 294

16.2.2 CEdit类结构 296

16.2.3 CEdit消息 297

16.2.4 CEdit类方法 297

16.2.5创建和初始化编辑控件 299

16.3 组合框控件:CComboBox类 303

16.3.1 组合框样式 304

16.3.2 CComboBox类结构 305

16.3.4 CComboBox类方法 308

16.3.6 样本程序:一个具有自绘颜色项的组合框 310

16.3.5 创建和初始化组合框 310

16.4 小结 317

17.1.1 CImageList类结构 318

17.1 图像列表控件:类 CImageList 318

第17章 图像列表、列表视图、树视图、进度栏和热键控件 318

17.1.2 CImageList类方法 320

17.1.3 CImageList控件的创建及初始化 320

17.2 列表视图控件:类CListCtrl 321

17.2.1 列表视图控件样式 323

17.2.3 CListCtrl类结构 324

17.2.2 图像列表与列表视图控件 324

17.3 列表视图项及其子项 326

17.3.1 列表视图的通知(Notification)消息 327

17.3.2 CListCtrl类方法 328

17.3.3 创建及初始化CListCtrl对象 329

17.3.4 使用列表视图控件 329

17.4 树视图控件:类CTreeCtrl 331

17.4.1 树视图控件样式 332

17.4.2 CTreeCtrl类结构 332

17.4.3 树视图通知消息 334

17.4.4 CTreeCtrl类方法 334

17.5 进度栏控件:类CProgressCtrl 336

17.4.7 样本程序:TREELIST.EXE 336

17.4.6 使用CTreeCtrl对象 336

17.4.5 创建并初始化树视图控件 336

17.5.1 CProgressCtrl类结构 338

17.5.2 CProgressCtrl类方法 338

17.5.3 创建并初始化CProgressCtrl对象 339

17.5.4 使用进度控件 339

17.6 热键控件:类CHotKeyCtrl 339

17.6.1 CHotKeyCtrl类结构 340

17.6.2 CHotKeyCtrl类方法 341

17.6.3 创建并初始化CHotKeyCtrl对象 341

17.6.4 使用热键控件 341

17.7 小结 342

18.1 制表控件:类CTabCtrl 343

第18章 制表、动画和多功能编辑控件 343

18.1.1 制表控件样式 344

18.1.2 CTabCtrl类结构 345

18.1.4 CTabCtrl类方法 346

18.1.3 制表控件通知消息 346

18.1.6 创建初始化一个制表控件 347

18.1.5 制表项结构(TC-ITEM) 347

18.1.7 使用制表控件 348

18.2.1 动画控件样式 351

18.2.2 CAnimateCtrl类结构 351

18.2.3 动画控件通知消息 352

18.2.4 CAnimateCtrl类方法 352

18.2.5 创建和初始化一个动画控件 352

18.2.6 使用动画控件 352

18.4 多功能编辑控件:CRichEditCtrl类 353

18.3.1 多功能编辑控件窗口样式 354

18.3.2 CRichEdit类结构 354

18.5 字符格式结构(CHARFORMAT) 356

18.6 段落格式结构(PARAFORMAT) 357

18.5.1 CRichEditCtrl类方法 359

18.5.2 CRichEditCtrl行相关方法 359

18.5.3 CRichEditCtrl文本选择方法 359

18.5.5 CRichEditCtrl编辑方法 360

18.5.4 CRichEditCtrl格式化方法 360

18.5.6 CRichEditCtrl剪贴板方法 360

18.5.7 CRichEditCtrl通用方法 360

18.5.8 创建并初始化一个多功能编辑控件 361

18.5.9 使用多功能编辑控件 361

18.7 样本程序:TAB1.EXE 362

18.6.1 决定显示对象 363

18.6.2 按样式填充多功能编辑控件 364

18.8 小结 365

第19章 工具栏、状态栏和工具提示 366

19.1 控件栏 366

19.2.1 CToolBar类 367

19.2 工具栏控件 367

19.2.2 CToolBarCtrl类 369

19.2.3 TBBUTTON结构 370

19.2.5 工具栏按钮样式 371

19.2.4 工具栏按钮状态 371

19.2.6 CToolBarCtrl类结构 372

19.2.7 工具栏通知消息 373

19.2.8 CToolBarCtrl类方法 374

19.2.9 创建和初始化工具栏控件 375

19.2.10 使用CToolBarCtrl对象 375

19.3.1 CStatusBar类 376

19.3 状态栏(Status Bars) 376

19.3.2 CStatusBarCtrl类 378

19.3.3 CStatusBarCtrl类结构 378

19.3.4 状态栏样式 379

19.4 工具提示控件:类CToolTipCtrl 380

19.3.5 创建并初始化状态栏控件 380

19.4.1 TOOLTIPTEXT(工具提示文本)结构 381

19.4.2 CToolTipCtrl类结构 382

19.4.3 处理ToolTip的TTN NEEDTEXT通知 383

19.4.4 CToolTipCtrl类方法 383

19.4.5 创建并初始化ToolTip(工具提示)控件 384

19.5 样本程序:CTRLBARI 384

19.5.1 应用程序类(CMyApp) 385

19.5.2 主框架窗口类(CMain Wnd) 386

19.5.3 创建控件 388

19.5.4 激活父窗口的工具提示 390

19.5.5 ToolTip通知处理器 390

19.5.6 更新状态栏并显示ToolTip 391

19.5.7 改变工具栏和状态栏的大小 392

19.6 小结 392

20.2 派生新的控件类 394

第20章 派生自定义控件 394

20.1 新控件的设计考虑 394

20.2.1 源文件 395

20.2.2 增加新的数据成员 395

20.2.3 定义新的控件类 396

20.2.4 覆盖继承DrawItem( )类的方法 398

20.2.5 绘制控件 399

20.3 PANEL1程序:测试派生CPanel3dCtrl类 405

20.4 小结 408

第4部分 资 源 409

第21章 图标、光标和位图 409

21.1 将资源附加于可执行文件上 410

21.2 从一个可执行文件中得到图像资源 410

21.3 图标 411

21.3.1 创建图标 412

21.3.2 使用256色图标 412

21.3.3 样本程序:用户区的图标(ICON1) 413

21.4.2 使用256色光标 418

21.4.3 使用动画光标 418

21.4 光标 418

21.4.4 样本程序:有方向的光标(CURSORI) 418

21.4.1创建光标 418

21.5 位图 423

21.5.1 创建位图 423

21.5.2 使用256色位图 423

21.5.3 利用光线跟踪位图以获取超现实主义效果 423

21.5.4 样本程序:开发位图资源(BITMAP1) 424

21.6 小结 428

第22章 菜单、加速器和字符串表 430

22.1 菜单 430

22.1.1 菜单消息 431

22.1.2 菜单结构 432

22.1.3 动态菜单 434

22.1.4 CMenu类的结构 434

22.1.5 CMenu类方法 435

22.2.1 创建加速器 437

22.2 加速器 437

22.2.2 装入并使用加速器 438

22.3 字符串表 438

22.3.1 裁掉多余的 439

22.3.2 自动装入资源 440

22.4.2 应用程序头文件(MAST.H) 441

22.4 样本程序:菜单、加速器和字符串表(MAST.EXE) 441

22.4.1 公用资源标识符 441

22.4.5 程序入口点:InitInstance( ) 443

22.4.3 实现MAST应用程序(MAST.CPP) 443

22.4.4 CMain Wnd消息映像 443

22.4.6 上下文菜单 444

22.4.7 响应菜单命令 445

22.5 小结 446

23.1 查看版本信息 448

第23章 版本信息和用户定义的资源 448

23.1.1 版本信息资源 449

23.1.2 版本资源结构 449

23.1.3 在应用程序中使用版本信息 453

23.2 用户自定义资源 455

23.2.1 访问你的自定义数据 456

23.2.2 一个用户定义资源样本:声波数据 457

23.3 小结 463

第24章 公用对话框 464

24.1 MFC中的标准公用对话框 465

24.1.1 公用对话框的错误检测 465

24.1.2 基公用对话框:类CCornmDialog 466

24.1.3 彩色对话框:类CColorDialog 466

24.1.4 文件对话框:类CFileDialog 468

24.1.5 Find和Replace对话框:类CFindReplaceDialog 471

24.1.6 字体对话框:类CFontDialog 474

24.1.7 打印对话框:类CPrintDialog 475

24.1.8 页设置对话框:类CPageSetup-Dialog 477

24.2 样本程序:使用公用对话框(DIALOG1.EXE) 480

24.2.1 使用彩色公用对话框 481

24.2.2 使用查寻、替换公用对话框 481

24.2.3 使用打开公用对话框 483

24.2. 5 使用打印公用对话框 484

24.2.4 使用另存为作为公用对话框 484

24.2.6 使用打印设置公用对话框 485

24.2.7 使用页面设置公用对话框 485

24.3 小结 487

25.1 对话框基本概念 488

25.1.1 对话框就是一个窗口 488

第25章 自定义对话框和对话栏 488

25.1.2 MFC对话框封套:类CDialog 489

25.1.3创建对象CDialog 489

25.1.4 对话控件 490

25.1.5 模态对话框 490

25.1.6 非模态式对话框 490

25.1.7 对话框模板 490

25.2 交换和验证对话框数据 491

25.1.8 映像消息到对话类 491

25.2.1更新数据 492

25.2.2 对话数据交换:DDX 492

25.2.4 类CDateExchange 493

25.2.3 对话数据验证:DDV 493

25.2.5 基于对话的应用程序 494

25.3 对话栏:类CDialogBar 494

25.3.1 对话栏控件样式 495

25.4 样本程序:DLALOG2 495

25.3.2 从对话栏得到消息 495

25.3.3 创建和使用对话栏 495

25.4.1 一个简单的About对话框类 496

25.4.2 一个更有趣的对话类 496

25.4.3 主框架窗口类 503

25.5 小结 505

26.1 属性工作表和属性页 506

第26章 Windows向导 506

26.1.1 类CPropertySheet和CPropertyPage 506

26.1.2 向导引路和属性工作表的连接 507

26.2 创建向导 508

26.2.1 设置向导模式 508

26.2.2 选择向导按钮 508

26.2.5 单击Back按钮 509

26.2.3 显示向导 509

26.2.4 向导通知消息 509

26.2.6 单击Next按钮 509

26.3.1 创建向导属性页的对话模板资源 510

26.3 样本程序:来看一下向导(Wizard1.exe) 510

26.3.2 为每一个对话资源建立对话类 510

26.3.3 开发“Welcome”页:类CIntroPage 512

26.3.4 开发“About you”页:类CPagel 515

26.3.5 更新CPage2和CPage3的向导信息 519

26.3.6 创建和显示向导 520

26.4 小结 521

27.1 类CFile 523

第27章 文件输入/输出和注册表 523

27.1.1 CFile类结构 523

27.1.2 CFile类方法 525

27.3 CMemFile类 528

27.3.1 CMemFile类方法 528

27.2 类CStdioFile 528

27.2.1 CStdilFile类方法 528

27.4.1 CSharedFile类方法 529

27.5 基本文件操作 529

27.5.1 创建、打开、读和写文件 529

27.4 类CSharedFile 529

27.5.2 复制、移动、换名和删除文件 530

27.5.3 样本程序:FILE1.EXE 532

27.5.4 样本程序:KILLHR.EXE 533

27.5.6 检查一个已存在的文件 534

27.5.5 接受从Explorer或File Manager拖来的文件 534

27.5.7 舍去硬返回 535

27.6 Windows注册表 537

27.7 初始化文件 538

27.7.1 预定义注册表关键字 538

27.7.2 注册表关键字和值 539

27.7.3 应用程序状态信息 539

27.7.4 注册表函数 540

27.8 样本程序(WALLFLIP.EXE) 541

27.8.1 应用程序头文件(WALLFLIP.H) 541

27.8.2 类CWallFlipApp 542

27.8.3 类CWallFlipDlg( ) 546

27.9 小结 549

第6部分 高级Windows编程 552

28.1.1 创建一个进程 552

第28章 进程与线程 552

28.1 进程 552

28.1.2 关闭进程 553

28.2 线程 554

28.2.1 线程类型 554

28.3 Win32中的多任务 554

28.5 CWinThread类 555

28.5.1 CWin Tbread类结构 555

28.4 MFC下的多线程 555

28.5.2 CWin Thread数据成员 557

28.5.3 CWin Thread类方法 557

28.5.4 全局线程帮助程序函数 558

28.5.5 线程调度 559

28.6 同步对象 560

28.6.1 CSingleLock类 560

28.6.2 CMultiLock类 561

28.6.3 CSyncObject类 561

28.6.5 CEvent类 562

28.6.4 CCriticalSection类 562

28.6.6 CMutex类 563

28.7 使用CMutex对象 563

28.8 样本程序(CURVES.EXE) 564

28.7.1 CSetnaphore类 564

28.8.1 CCurveThread类 565

28.8.2 创建曲线线程 570

28.9 小结 570

29.2 基本异常语法 572

29.1.1 关键字try,throw,catch 572

29.1 处理异常 572

第29章 异常和异常处理 572

29.2.1 异常保护你的代码 573

29.3 未处理的异常 574

29.3.1 异常中的清除 574

29.4 MFC异常 575

29.4.1 CException类 576

29.4.2 CArchiveException类 576

29.4.3 CDaoException类 577

29.4.4 CDBException类 577

29.4.5 CFileException类 578

29.4.6 CMemoryException类 579

29.4.7 CNotSupportedException类 579

29.4.8 COleDispatchException类 579

29.4.11 CUserException类 580

29.4.9 COleException类 580

29.4.10 CResourceException类 580

29.4.12 转换MFC异常到C++异常 581

29.5 小结 582

第30章 动态链接库设计与实现 583

30.1 16位DLL 583

30.2 32位DLL 583

30.2.1 DLL的入口点:DLLMain( )函数 584

30.2.2 使用C语言编写的DLL 585

30.2.3 匹配引入和引出 585

30.2.4 为DLL创建一个应用程序接口 586

30.3 用MFC编写DLL 586

30.3.1 常规型DLL 587

30.3.2 扩展DLLs 587

30.4.1 用C语言创建DSK DLL:DYNLINK1.DLL 588

30.4 样本程序:DLLTESTI.EXE 588

30.4.2 用MFC创建常规DLL:DYNLINK2.DLL 590

30.4.3 用MFC创建扩展DLL:DYNLINK3.DLL 592

30.5 小结 595

第31章 组件对象模型(COM)、OLE和ActiveX 596

31.1 OLE历史的简要回顾 596

31.1.1 OLE1.0版 596

31.1.2 OLE2.0版 596

31.2.1 ActiveX SDK 597

31.2 OLE的特性 597

31.3 组件对象模型(COM) 598

31.3.1 COM接口 598

31.3.2 COM标识符 598

31.4 IUnKnown接口 599

31.4.1 查询接口 600

31.5 IClassFactory接口 601

31.5.1 注册表的作用 601

32.4.2 引用计数 601

31.5.2 分布式组件对象模型(DCOM) 602

31.6 OLE 602

31.6.1 OLE客户机和服务器 603

31.7 MFC和OLE 603

31.7.2 使用接口映像 604

31.8 小结 604

31.7.1 接口映像(Interface Map) 604

第32章 OLE自动化 606

32.1 IDispatch接口 606

32.1.1 VARIANT数据类型 607

32.1.2 IDispatch::Invoke( )方法 608

32.1.4 OLE自动化服务器 609

32.1.3 类型库 609

32.2.2 调度映像(Dispatch Maps) 610

32.2 MFC和OLE自动化 610

32.2.1 MFC调度(Dispatch)标识符的分配 610

32.3 OLE自动化服务器和控制器应用程序实例 614

32.3.1 OLE自动化服务器的实现 614

32.3.2 OLE自动化控制器的实现 618

32.4 小结 620

第33章 OLE控件 622

33.1.2 MFC的OLE控件类 622

33.1 OLE控件概述 622

33.1.1 标准OLE控件特征 622

33.1.3 COleControlModule类 623

33.1.4 COleControl类 624

33.1.5 COleControl类结构 624

33.1.6 CPropertyPage类用于自包含的控件 625

33.1.8 事件映像和库存事件 626

33.1.7 属性页数据交换 626

33.2.1 创建一个OLE控件框架 627

33.2 一个OLE控件示例(PANEL3D.OCX) 627

33.2.2 测试框架控件 629

33.3 向框架中增加功能 630

33.3.1 自定义项目资源 631

33.3.2 属性页对话资源 631

33.3.4 CPanel3dCtrl类接口 634

33.3.3 CPanel3dCtrl类 634

33.3.5 实现CPanel3dCtrl类 636

33.3.6 CPanel3dPropPage类 641

33.3.7 测试控件 641

33.4 在一个样本程序中使用新控件 641

33.4.1 把Panel3d控件添加到VB项目中 642

34.1.1 超文档概念 649

649

34.1.2 Windows帮助超文档 650

34.2 帮助项目文件(.HPJ) 651

34.2.1 定义Help项目文件段 651

34.3 多格式文本文件(.RTF) 657

34.3.1 使用Windows下的Word 657

34.3.2 专用脚注符号 657

34.4 交互式位图:分段超图形(.SHG) 658

34.4.1 使用热点编辑器(SHED) 659

34.4.2 通过引用来包含位图 662

34.5 目录(Content)文件(.CNT) 662

34.6 使用WinHelp宏和Windows动态链接库DLL 663

34.8.1 HELPINFO结构 664

34.8 上下文相关的Help 664

34.7 在MFC中设置Help文件名 664

34.9 直接调用WinHelp 665

34.10 样本程序:一个联机Help样本程序(HELP1.EXE) 666

34.10.1 映像Help主题到MFC应用程序构件 667

34.10.2 一个示例Help项目文件(HELP1.HPJ) 668

34.10.3 样本应用程序HELP1的结构和实现 670

34.11 小结 673

第7部分 Windows通信程序设计 675

第35章 通信概念及实现途径 675

35.1 通信技术背景 675

35.1.1 网络 675

35.1.2 客户机/服务器系统 676

35.1.3 调制解调器 676

35.2.2 Windows Sockets(WinSock) 677

35.2 Windows通信概述 677

35.2.1 商业工具 677

35.2.3 Win32 Internet(WinInet)API 678

35.2.4 微软的因特网客户机/服务器的结构 678

35.2.5 因特网服务器API(ISAPI) 679

35.2.6 ActiveX控件 679

35.2.7 Messaging API(MAPI) 679

35.3 通过代码签名的因特网的安全性 680

35.3.1 涉及的安全性问题 680

35.3.2 签暑你的代码 681

35.3.3 考虑价格因素 681

35.4 小结 682

36.1.1 IP协议 683

36.1.2 IP地址 683

36.1 因特网协议集 683

第36章 用WinSock通 683

36.1.3 主机名 685

36.1.4 数据报,端口和套接字 685

36.2 Windows套接字概述 686

36.2.1 建立套接字 686

36.2.2 套接字结构 686

36.2.3 伯克利套接字规范的Windows扩展 687

36.3 MFC中的Windows Sockets 689

36.3.1 CAsyncSocket类 689

36.3.2 CAsyneSocket类方法 689

36.3.3 创建和使用CAsyncSocket对象 690

36.3.5 CSocket类方法 691

36.3.4 CSocket类 691

36.3.6 创建CSocket对象 692

36.3.7 使用CSocket对象 692

36.4 小结 692

第37章 WinInet API和MFC WinInet类的使用 693

37.1 WinInet API介绍 693

37.1.1 使用 WinInet API的好处 693

37.1.2 TCP/IP和Windows Sockets 693

37.1.3 接口友好 694

37.1.4 最新的API和安全保证(Safe Bet) 694

37.1.5 熟悉的编程接口 694

37.1.6 支持多线程 694

37.1.7 数据缓存的支持 694

37.2 句柄和函数 694

37.3 通用WinInet函数 695

37.4 WinInet FTP函数 696

37.5 WinInet Gopher函数 697

37.6 WinInet HTTP函数 697

37.7 样本程序:RAWHTML.EXE 698

37.7.1 CRawHtmlApp类 698

37.7.2 CRawHtmlDlg对话框类和头文件HTMLDLG.H 699

37.7.3 CRawHtmlDlg类的具体实现(HTMLDLG.CPP) 700

37.7.4 初始化WinInet会话 705

37.7.5 获取协议句柄 706

37.7.6 打开文件 707

37.7.7 查询信息 709

37.7.8 读文件数据 710

37.8.2 连接类 711

37.8 MFC因特网扩展类 711

37.8.1 CInternetSession类 711

37.8.3 因特网文件类 712

37.8.4 全局MFC因特网函数 713

37.9 RAWHTML的修正样本程序:RAWHTM2.EXE 713

37.10 小结 716

第38章 创建ActiveX控件以激活Web页 718

38.1 ActiveX控件概述 718

38.1.1 OLE控件96规范 718

38.2 ActiveX控件样本程序:JIGGLER.OCX 719

38.2.1 创建一个OLE控件框架 719

38.2.2 测试框架控件 720

38.3 给框架添加功能 720

38.3.2 属性页对话框资源 721

38.3.1 自定义项目资源 721

38.3.3 CJigglerCtrl类 722

38.3.4 CJigglerCtrl类界面(JIGGLERC.H) 722

38.3.5 实现CJigglerCtrl类 723

38.3.6 CJigglerPropPage类 730

38.4 在OLE Control Test Container中测试控件 732

38.5 在一个简单网页上使用新控制 732

38.5.1 创建一个简单的HTML网页 733

38.5.2 将Jiggler控件加入网页 734

38.5.3 用VBScript对Jiggler控件进行编程 738

38.6 小结 741

39.1.1 客户机应用程序 742

第39章 用MAPI创建通邮的应用程序 742

39.1 消息应用程序编程接口(MAPI) 742

39.2 两种较高级的选择:简单的MAPI和CMC 743

39.2.1 简单的MAPI 743

39.2.2 公共消息调用(CMC) 743

39.2.3 MapiMessage结构 744

39.2.4 MapFileDesc结构 745

39.3 MFC中有限的MAPI功能 745

39.4 CDocument连接 746

39.4.1 做MAPI的MFC方法 746

39.4.2 CDocument::OnFileSendMail( )方法 746

39.5 样本程序:MAPII.EXE 750

39.6 小结 753

附录A数据类型与Windows句柄 754

A.1 简单数据类型(Simple Data Types) 754

A.2 结构化的数据类型(Structured Data Types) 755

A.3 句柄(Handles) 755

附录B 窗口类与窗口样式 757

B.1 窗口类结构 757

B.2 窗口类样式 759

B.3 窗口样式 760

B.3.1 重叠式窗口 761

B.3.2 弹出式窗口 761

B.3.3 子窗口 762

B.4窗口样式分组 762

B.4.2 非客户域组件样式 764

B.4.1 窗口边界样式 764

B.4.3 初始窗口状态样式 765

B.4.4 父与子窗口样式 765

B.4.5 对话框样式 765

B.4.6 扩展的窗口样式 766

附录C Windows 95微标要求 767

C.1 概述(Overview) 767

C.2 对所有应用程序类型的要求 767

C.3 基于文件应用程序的要求 768

C.4 实用应用程序的要求 769

C.4.1 实用应用程序的建议 769

C.5 编译器与其他开发工具的要求 770

D.2 迁移阶段 771

D.1 MFC迁移包 771

附录D 从C到MFC的迁移 771

D.2.1 准备 772

D.2.2 阶段1:迁移WinMain( )和WndProc( )代码 772

D.2.3 阶段2:删除处理消息的开关语句 773

D.2.4 阶段3:用MFC更进一步集成 773

附录E 匈牙利记法 775

E.1 匈牙利基类型和前缀(Hungarian Base Types and Prefixes) 775

附录F MFC中Windows公共控件的通知消息 777

F.1 Windows公共控件的通知 777

F.2 通知消息结构 777

F.3 通知过程的概述 777

F.3.1 更好地处理通知的方案 778

F.4 用ON_NOTIFY_RANGE指定通知域 779