前言页 1
第一部分 Visual C++简介 3
第1章 Visual C++工作平台概述 3
1.1 Visual工作平台的装入 3
1.2 File菜单 4
1.2.1 New命令 5
1.2.2 Open命令 5
1.2.3 Close命令 5
1.2.6 Save All命令 6
1.2.7 Print命令 6
1.2.4 Save命令 6
1.2.5 Save As命令 6
1.2.8 Page Setup命令 8
1.2.9 Exit命令 9
1.3 Edit菜单 9
1.3.1 Undo命令 9
1.3.2 Redo命令 9
1.3.3 Cut命令 10
1.3.4 Copy命令 10
1.3.5 Paste命令 10
1.3.6 Delete命令 10
1.3.7 Find命令 10
1.3.8 Replace命令 15
本书中都包含了哪些内容? 15
本书适合你吗 15
序言 15
1.3.10 Read-Only命令 16
1.4 View菜单 16
1.3.9 Find Match Brace命令 16
1.4.1 Line命令 17
1.4.2 Mixed Source/Asm命令 17
1.4.3 Next Error命令 17
1.4.4 Previous Error命令 17
本书中的约定 18
1.4.5 Toggle Bookmark命令 18
1.4.6 Next Bookmark命令 18
1.4.7 Previous Bookmark命令 18
1.4.8 Clear All Bookmark命令 18
1.4.9 Toolbar命令 19
1.4.10 Status Bar命令 19
1.4.11 Syntax Coloring命令 19
1.5 Projcect菜单 19
1.5.2 New命令 20
1.5.1 AppWizard命令 20
1.5.3 Open命令 22
1.5.4 Edit命令 22
1.5.5 Close命令 23
1.5.6 Compile File命令 23
1.5.7 Build命令 23
1.5.8 Rebuild All命令 23
1.5.9 Stop Build命令 23
1.5.10 Execute命令 23
1.5.11 Scan Dependencies命令 24
1.5.12 Scan All Dependencies命令 25
1.5.13 Load Workspace命令 25
1.5.14 Save Workspace命令 25
1.6 Browse菜单 25
1.6.1 Go to Definition命令 25
1.6.4 Previous命令 26
1.6.3 Next命令 26
1.6.2 Go to Reference命令 26
1.6.5 Pop Context命令 27
1.6.6 Open PRJ.BSC命令 27
1.6.7 Class Wizard命令 27
1.7 Debug菜单 28
1.7.1 Go命令 28
1.7.2 Restart命令 28
1.7.3 Stop Debugging命令 29
1.7.4 Step Into命令 29
1.7.5 Step Over命令 29
1.7.6 Step Out命令 29
1.7.7 Step to Cursor命令 29
1.7.8 Show Call Stack命令 29
1.7.9 Breakpoints命令 29
1.8 Tools菜单 31
1.7.10 QuickWatch命令 31
1.9 Options菜单 32
1.9.1 Project命令 32
1.9.2 Debug命令 34
1.9.3 Directories命令 34
1.9.4 Editor命令 34
1.9.5 Workspace命令 34
1.9.6 Tools命令 34
1.9.7 Color命令 35
1.9.8 Font命令 36
1.10 Window菜单 36
1.10.1 Cascade命令 36
1.10.2 Tile命令 36
1.10.6 Locals命令 37
1.10.5 Watch命令 37
1.10.4 Close All命令 37
1.10.3 Duplicate命令 37
1.10.7 Register命令 38
1.10.8 Output命令 38
1.11 Help菜单 38
1.12 总结 38
第2章 MFC层次结构概述 40
23.1 Windows消息的管理 40
2.1.1 消息的响应 41
2.1.2 消息的发送 42
2.1.3 用户自定义消息 42
2.2 MFC库概述 44
2.3 文档和应用类 45
2.3.1 CWinApp类 46
2.4 窗口支持类 49
2.5 控制类 56
2.5.1 CStatic类 57
2.5.2 CButton类 57
2.5.3 CBitmapButton类 58
2.5.4 CEdit类 59
2.5.5 CHEdit类 60
2.5.6 CBEdit类 60
2.5.7 CScrollBar类 60
2.5.8 CListBox类 61
2.5.9 CComboBox类 62
2.5.10 CVBControl类 64
2.6 对话框类 68
2.7 框架窗口类 68
2.7.1 CFrameWnd类 68
2.7.2 CMDIFrameWnd类 70
2.7.3 CMDIChildWnd类 72
2.8 视类 73
2.9 控制条类 73
2.10 菜单类 73
2.11 图形绘制对象类 75
2.12 图形绘制类 75
2.13 文件事务类 76
2.14 异常处理类 76
2.15 集合类 77
2.16 OLE支持类 77
2.17 ODBC类 77
2.18 各种杂类 78
2.19 简单的MFC例程序 79
2.19.1 最小的MFC程序 79
2.19.2 简单的MFC程序 81
2.20 总结 85
第3章 AppWizard应用程序的使用 87
3.1 最小化程序 87
3.1.1 运行程序APPWIZ1.EXE 91
3.1.2 APPWIZ1.DEF文件 91
3.1.3 RESOURCE.H文件 92
3.1.4 APPWIZ1.H文件 92
3.1.5 STDAFX.H文件 93
3.1.6 MAINFRM.H文件 93
3.1.7 APPWIVW.H文件 94
3.1.8 APPWIDOC.H文件 95
3.1.9 APPWIZ1.RC文件 96
3.1.10 APPWIZ1.RC2文件 100
3.1.11 APPWIZ1.CPP文件 101
3.1.13 MAINFRM.CPP文件 104
3.1.12 STDAFX.CPP文件 104
3.1.14 APPWIVW.CPP文件 105
3.1.15 APPWIDOC.CPP文件 107
3.2 加进工具条和状态条 108
3.2.1 运行APPWIZ2.EXE程序 110
3.2.2 APPWIZ2源文件 110
3.2.3 MAINFRM.H文件 111
3.2.4 APPWIZ2.RC文件 112
3.2.5 MAINFRM.CPP文件 116
3.3 加进打印支持 118
3.3.1 运行APPWIZ3.EXE程序 119
3.3.2 APPWIZ3源文件 121
3.3.3 APPWIVW.H文件 121
3.3.4 APPWIZ2.RC文件 122
3.3.6 APPWIVW.CPP文件 126
3.3.5 APPWIZ3.CPP文件 126
3.4 加进MDI支持 128
3.4.1 运行APPWIZ4.EXE程序 130
3.4.2 APPWIZ4源文件 130
3.4.3 MAINFRM.H文件 131
3.4.4 APPWIZ4.RC文件 132
3.4.5 APPWIZ4.CPP文件 136
3.5 将特性组合起来 139
3.5.1 运行APPWIZ5.EXE程序 139
3.6 总结 140
第4章 ClassWizard应用程序的使用 142
4.1 如何激活ClassWizard应用程序 142
4.2 Message Maps选项 142
4.3 Member Variables选项 143
4.5.1 AppWizard应用程序的使用 144
4.4 Class Info选项 144
4.5 如何往视类中加进成员函数 144
4.5.2 加进成员函数 148
4.5.3 按要求对代码进行修改 152
4.6 文档和视结构 159
4.7 总结 166
第5章 App Sudio应用程序的使用 168
5.1 激活App Studio 168
5.2 修改菜单资源 169
5.3 加进新的对话框资源 184
5.4 创建有格式视(form view) 198
5.5 总结 210
6.1 静态文本控制 213
6.1.1 CStatic类 213
第6章 静态文本控制、按钮控制及编辑控制的使用 213
第二部分 Visual C++程序设计 213
6.1.2 静态文本例子 215
6.2 编辑控制 230
6.2.1 CEdit类 231
6.2.2 和裁剪板有关的编辑函数 232
6.2.3 对编辑控制的查询 232
6.2.4 如何修改编辑控制 234
6.2.5 程序员的计算器 235
6.3 按钮控制 252
6.3.1 CButton类 253
6.3.2 按钮消息 253
6.3.3 如何操纵窗口 254
6.3.4 经过改进的程序员计算器 255
6.4 总结 269
7.1.1 对CButton类和检查框的讨论 270
第7章 成组控制的使用 270
7.1 检查框控制 270
7.1.2 检查框消息的响应 271
7.2 圆形按钮控制 272
7.2.1 对CButton类和圆形按钮的讨论 272
7.2.2 圆形按钮消息的响应 272
7.3 成组控制 272
7.4 被更新了的计算器应用 273
7.5 总结 291
第8章 可滚动控制的使用 292
8.1 滚动条控制 292
8.1.1 CScrollBar类 292
8.1.2 如何响应滚动条通知消息 294
8.1.3 随机数发生器 294
8.2.1 CListBox类 308
8.2 列表框控制 308
8.2.2 如何响应列表框通知消息 312
8.2.3 一个简单的列表操作测试程序 313
8.3 多重选择列表框 326
8.3.1 多重选择列表框测试程序 326
8.4 组合框控制 338
8.4.1 CComboBox类 339
8.4.2 如何响应组合框通知消息 342
8.4.3 作为记事列表框使用的组合框 343
8.5 程序员计算器的第4个版本 343
8.5.1 COCA应用的代码 359
8.6 总结 362
第9章 对话框的使用 364
9.1 对话框的创建 364
9.2.1 OnInitDialog函数 365
9.2 执行有模式对话框 365
9.2.2 OnOK函数 366
9.2.3 OnCancel函数 366
9.3 简单有模式对话框的使用 366
9.4 将对话框作为窗口来使用 371
9.5 控制数据的传送 381
9.5.1 基础知识 381
9.5.2 数据传送机制 385
9.5.3 CDataExchange类 385
9.6 简单有模式对话框的数据传送 386
9.7 复杂有模式对话框的数据传送 393
9.8 不用DoDataExchange所进行的对话框数据传送 402
9.9 使用简单无模式对话框所进行的数据传送 405
9.10 总结 416
第10章 公用对话框的使用 417
10.1 软件要求 417
10.2 CColorDialog类 417
10.2.1 支持类和数据结构 418
10.2.2 Clolor对话框的激活 419
10.2.3 CColorDialog的辅助函数的使用 420
10.2.4 测试CColorDialog类 420
10.3 CFontDialog类 423
10.3.1 支持类和数据结构 423
10.3.2 CFontDialog的辅助函数的使用 426
10.3.3 测试CFontDialog类 426
10.4 CPrintDialog类 430
10.4.1 支持的数据结构和类 431
10.4.4 测试CPrintDialog类 434
10.4.3 Print和Setup对话框的激活 434
10.4.2 CPrintDialog的辅助函数的使用 434
10.5 CFileDialog类 439
10.5.1 支持类和数据结构 439
10.5.2 如何激活File对话框 442
10.5.3 如何使用CFileDialog辅助函数 443
10.5.4 测试CFileDialog类 443
10.6 CFindReplaceDialog类 447
10.6.1 支持类和数据结构 449
10.6.2 如何通知父窗口 451
10.6.3 如何使用CFindReplaceDialog类的辅助函数 451
10.6.4 测试CFindReplaceDialog类 452
10.7 总结 457
第11章 工具条和状态条的使用 461
11.1 CToolBar类 461
第三部分 高级Visual C++程序设计 461
11.2 工具条编程指南 464
11.3 一个工具条应用程序 464
11.4 CStatusBar类 477
11.5 应用程序状态条编程指南 479
11.6 一个使用状态条的示例性程序 480
11.7 总结 493
第12章 MDI窗口的使用 494
12.1 了解MDI应用程序:特征及组成 494
12.2 CMDIFrameWnd类的定义 495
12.3 创建MDI框架窗口 496
12.4 CMDIChildWnd类的定义 497
12.5 创建MDI子窗口 498
12.6 管理MDI消息 498
12.7 使用系统文件阅读器 498
12.7.2 MDI框架类 506
12.7.1 应用程序类 506
12.7.3 MDI子窗口类 508
12.8 使用时钟的MDI程序 509
12.8.1 MDI子窗口类 519
12.8.2 MDI框架窗口类 520
12.9 总结 521
第13章 Visual Basic控制的使用 523
13.1 了解VBX控制的特性、方法及事件 523
13.2 定义CVbControl类 523
13.3 针对VBX控制使用AppWizard和ClassWizard 528
13.4 在App Studio中安装VBX控制 528
13.5 使用栅格VBX控制 529
13.5.1 关于VBTABLE.EXE程序 530
13.5.3 如何建立VBTABLE.EXE程序 531
13.5.2 有关的栅格特性和方法 531
13.5.4 VBTABLE项目中未改动过的文件 549
13.6 总结 552
第14章 CString类和集合类的使用 553
14.1 CString类 553
14.1.1 构造函数 555
14.1.2 存取函数 556
14.1.3 赋值运算等 557
14.1.4 特征函数 557
14.1.5 连接运算符 557
14.1.6 串比较函数 558
14.1.7 串析取函数 559
14.1.8 字符转换函数 559
14.1.9 搜索函数 560
14.1.10 测试CString类 561
14.2 数组类 572
14.2.1 CStringArray类 573
14.2.2 其它数组类 574
14.2.3 CStringArray类的测试 575
14.3 表类 585
14.3.1 CStringList类 585
14.3.2 测试CStringList类 588
14.4 映射类 598
14.4.1 CMapStringToString类 598
14.4.2 测试CMapStringToString类 600
14.5 总结 610
第15章 异常处理类的使用 611
15.1 Visual C++异常处理 611
15.1.1 Visual C++异常处理语法 611
15.2 CException类 613
15.1.3 如何进入异常处理 613
15.1.2 MFC异常处理类 613
15.3 CMemoryException类 614
15.4 CMemoryException类的测试 615
15.5 CFileException类 618
15.6 测试CFileException类 620
15.6.1 对话框类 626
15.6.2 主窗口类 627
15.7 CArchiveException类 628
15.8 CResourceException类 629
15.9 测试CResourceException类 630
15.10 CUserException类 637
15.11 测试CUserException类 637
15.12 CNotSupportedException类 644
15.13 COleException类 644
15.14 总结 645
16.1 检验Browse菜单 647
第16章 工作平台Browse窗口的使用 647
16.2 浏览宏 649
16.2.1 afx_msg宏 649
16.2.2 BEGIN_MESSAGE_MAP宏 650
16.2.3 CM_EXIT宏 651
16.2.4 MB_ok宏 652
16.2.5 NULL宏 652
16.3 浏览数据类型 653
16.3.1 BOOL数据类型 654
16.3.2 RECT数据类型 654
16.4 浏览变量 655
16.5 使用Call Graph特性 657
16.5.1 成员函数CMCalc 657
16.5.2 成员函数setDecimal 658
16.6 使用Caller Graph特性 659
16.5.3 成员函数getVar 659
16.6.1 成员函数CMCalc 660
16.6.2 成员函数setDecimal 660
16.6.3 成员函数getVar 660
16.7 使用Base Class Graph特性 661
16.7.1 CMainWEnd类 661
16.7.2 CxEdit类 661
16.7.3 CxButton类 663
16.8 使用Derived Class Graph特性 663
16.9 总结 664
第17章 工作平台调试器的使用 665
17.1 Debug菜单命令回顾 665
17.2 检验硬调试模式和软调试模式 666
17.3. 设置断点 666
17.3.1 了解各种断点 667
17.4 调试CTLLST4.EXE程序 668
17.3.2 检验断点位置的格式 668
17.5 使用无条件断点 684
17.6 使用带表达式的断点 686
17.7 查看调用栈 687
17.8 查阅混合的源码/汇编码 688
17.9 管理Watch窗口 689
17.9.1 增加表达式 689
17.9.2 删除表达式 689
17.9.3 变量的展开和收缩 689
17.10 总结 689
第四部分 高级Visual C++工具 693
第18章 Spy应用程序的使用 693
18.1 Spy工具简介 693
18.2 检测Spy菜单 694
18.3 检测Window菜单 694
18.4 检测Options!菜单 695
18.5 探查APPSTUD2.EXE程序 696
18.5.1 监视鼠标消息 697
18.5.2 监视输入消息 698
18.5.3 监视窗口消息 701
18.6 监视按钮输入消息 701
18.7 总结 702
第19章 Stress应用程序的使用 704
19.1 如何调出Stress应用程序 704
19.2 Settings菜单 704
19.2.1 Fixed Settings命令 705
19.2.2 Executer命令 705
19.2.3 Log Settings命令 706
19.3.3 Free All命令 707
19.3.2 End Executer命令 707
19.3.1 Begin Executer命令 707
19.3 Options菜单 707
19.3.4 Move to Corner命令 708
19.3.5 Put Back命令 708
19.3.6 Repaint Screen命令 708
19.4 监测APPSTUD2.EXE程序 708
19.5 总结 714
附录A ASCII码和扩展的ASCII码 715
附录B 控制资源代码 723
B.1 建立菜单资源 723
B.2 检验对话框资源 725
B.3 检验DIALOG任选项语句 726
B.3.1 STYLE语句 726
B.3.2 CAPTION语句 726
B.3.3 MENU语句 726
B.4 检验对话框控制资源 727
B.4.1 通用CONTROL资源 727
B.3.4 CLASS语句 727
B.3.5 FONT语句 727
B.4.2 LTEXT语句 729
B.4.3 RTEXT语句 729
B.4.4 CTEXT语句 729
B.4.5 CHECKBOX语句 729
B.4.6 PUSHBUTTON语句 730
B.4.7 DEFPUSHBUTTON语句 730
B.4.8 LISTBOX语句 730
B.4.9 GROUPBOX语句 730
B.4.10 RADIOBUTTON语句 731
B.4.11 EDITTEXT语句 731
B.4.12 COMBOBOX语句 731
B.4.13 SCROLLBAR语句 732
附录C 高级MFC类 733
C.1 对话框类 733
C.1.1 CDialog类 733
C.1.2 CFileDialog类 735
C.1.3 CColorDialog类 736
C.1.4 CFontDialog类 737
C.1.5 CPrintDialog类 738
C.1.6 CFindReplaceDialog类 739
C.2 视类 740
C.2.1 CView类 740
C.2.2 CScrollView类 742
C.2.3 CFormView类 743
C.2.4 CEditView类 744
C.3.1 CControlBar类 746
C.3 控制条类 746
C.3.2 CToolBar类 747
C.3.3 CStatusBar类 748
C.3.4 CDialogBar类 750
C.3.5 CSplitterWnd类 750
C.4 集合类 752
C.4.1 数组类 753
C.4.2 列表类 754
C.4.3 映射类 755
附录D 从OWL2向MFC2的移植 757
D.1 转换的一般性评述 757
D.2 类的转换 757
D.3 消息映射宏的转换 758
D.4 一个简单程序 760
D.5 一个实用的程序 763
作者简介 782