目录 1
目录 2
第一部分 ObjectWindows初步 2
第一章 继承窗口 2
1.1 何谓Windows应用程序 2
1.1.1 Windows的优点 2
1.1.2 需求 3
1.2 面向对象的窗口编程 3
1.2.1 一个较好的Windows接口 3
1.3 Windows程序的结构 7
1.3.1 Windows的结构 7
1.4.1 应用程序的启动步骤 8
1.3.2 与Windows和DOS的交互作用 8
1.4 “Hello,Windows” 8
1.4.2 主窗口的职责 9
1.5 应用程序开发步骤 9
第二章 Windows基础 10
2.1 编制一个ObjectWindows应用程序:预备知识 10
2.1.1 容器类库 10
2.1.2 目录 10
2.1.3 指定正确的库 11
2.1.4 生成资源文件 12
2.2.2 使用Borland C++命令行工具建立ObjectWindows应用程序 13
2.2 建立ObjectWindows应用程序 13
2.2.1 使用IDE建立ObjectWindows应用程序 13
2.3 STEP1.CPP:一个简单的Windows应用程序 14
2.3.1 应用程序要求 14
2.4 STEP2.CPP:主窗口类 16
2.4.1 何谓窗口对象 16
2.4.2 生成主窗口对象 17
2.4.3 响应消息 18
2.4.4 终止应用程序 19
第三章 填充窗口 21
3.1 显示上下文 21
3.2.1 消息结构 22
3.2 STEP3.CPP:在窗口中绘制文本 22
3.2.2 清屏 23
3.3 STEP4.CPP:在窗口中画线 23
3.3.1 拖拽模型 24
3.3.2 响应拖拽消息 24
3.4 STEP5.CPP:改变线宽 26
3.4.1 选择新的画笔 26
3.4.2 运行输入对话框 28
3.5 STEP6.CPP:绘制图形 29
3.5.1 绘图模式 29
3.5.2 把图形当作对象来存储 29
3.5.3 重绘存储的图形 31
第四章 增加菜单 33
4.1 菜单资源 33
4.2 STEP7.CPP:主窗口菜单 34
4.3 解释菜单消息 35
4.4 响应菜单消息 36
第五章 增加对话框 37
5.1 STEP8.CPP:增加一个弹出式窗口 37
5.1.1 生成弹出式窗口 38
5.1.2 MakeWindow函数 38
5.2 增加一个对话框 38
5.2.2 运行对话框 39
5.2.1 增加一个数据成员 39
5.3 STEP9.CPP:存储图形到文件中 40
5.3.1 状态管理 40
5.3.2 打开和存储文件 42
第六章 弹出窗口 44
6.1 STEP10.CPP:弹出一个帮助窗口 44
6.2 使用ObjectWindows中的模块 44
6.2.1 修改主程序 44
6.2.2 建立HELPWIND模块 44
6.3 增加控制到窗口中 46
6.3.1 何谓控制 46
6.3.2 建立窗口控制 46
6.3.4 管理控制 47
6.3.3 作为数据成员和控制对象 47
6.3.5 对控制事件的响应 49
第二部分 使用ObjectWindows 52
第七章 概述 52
7.1 ObjectWindows的约定 52
7.2 ObjectWindows的类体系 53
7.2.1 Object 53
7.2.2 TModule 53
7.2.3 TApplication 53
7.2.7 控制对象 54
7.2.6 对话框对象 54
7.2.5 窗口对象 54
7.2.4 界面对象 54
7.2.8 MDI对象 55
7.2.9 滚动条对象 55
7.3 Windows API函数 56
7.3.1 ObjectWindows调用Windows函数 56
7.3.2 对Windows函数的访问 56
7.3.3 组合类型常量 57
7.3.4 Windows函数类型 57
7.3.5 回调函数 57
7.4 Windows消息 59
7.4.2 Windows的消息类型 60
7.4.1 Windows消息参数 60
7.6 发送消息 61
7.5 缺省的消息处理 61
7.7 消息值域 62
7.8 用户定义的消息 62
第八章 模块和应用程序对象 64
8.1 应用程序流程 64
8.2 初始化应用程序 65
8.2.1 初始化主窗口 65
8.2.2 初始化各个应用程序事例 66
8.2.3 初始化第一应用程序事例 67
8.4 关闭应用程序 68
8.3 运行应用程序 68
第九章 界面对象 70
9.1 TWindowsObject 70
9.2 为何要用界面对象 70
9.3 窗口父/子关系 71
9.3.1 子窗口表 71
9.3.2 子窗口遍历函数 72
9.4 消息处理 72
9.4.1 对消息的响应 73
9.4.2 命令和子窗口消息 74
9.4.3 缺省消息处理 75
10.1 TWindow类 76
10.2 初始化和生成窗口对象 76
10.2.1 初始化窗口对象 76
第十章 窗口对象 76
10.2.2 生成窗口元素 78
10.2.3 初始化和窗口生成概述 79
10.3 窗口类登记 79
10.3.1 登记属性 80
10.4 翻滚窗口 82
10.4.1 滚动条属性 82
10.4.3 滚动实例 83
10.4.2 为窗口设定滚动条 83
10.4.4 自动翻滚和跟踪 84
10.4.5 修改翻滚单位和区间 85
10.4.6 修改翻滚位置 85
10.4.7 设置页的尺度 86
10.4.8 为翻滚优化绘图成员函数 86
10.5 编辑窗口和文件窗口 87
10.5.1 编辑窗口 87
10.5.2 文件窗口 89
10.6 实例 90
11.2.1 构造和初始化子对话框对象 106
11.2 使用子对话框对象 106
第十一章 对话框对象 106
11.1 使用对话框资源 106
11.2.2 生成和执行对话框 107
11.2.3 关闭子对话框 107
11.2.4 把对话框用作为主窗口 108
11.2.5 控制管理和消息处理 108
11.2.6 使用对话框的复杂范例 111
11.3 输入对话框 112
11.4 文件对话框 113
11.5 实例 114
12.1.1 控制的构造与创建 145
第十二章 控制对象 145
12.1 控制对象的使用 145
12.1.2 控制的撤销 146
12.1.3 控制和消息处理 146
12.2 控制焦点与键盘 148
12.3 列表框控 148
12.3.1 构造和创建列表框 148
12.3.2 修改列表框 149
12.3.3 查询列表框 150
12.3.4 从列表框取得所选内容 150
12.4 组合框 151
12.4.1 三种组合框 151
12.3.5 实例 151
12.4.2 创建组合框 152
12.4.3 修改组合框 152
12.4.4 应用实例:CBoxTest 153
12.4.5 实例 153
12.5 静态控制 153
12.5.1 创建静态控制 153
12.5.2 查询静态控制 154
12.5.3 修改静态控制 154
12.5.4 静态控制的例子:StatTest程序 154
12.6 编辑控制 154
12.6.1 创建编辑控制 155
12.6.2 剪接板和编辑操作 156
12.6.3 查询编辑控制 156
12.6.4 修改编辑控制 158
12.6.5 例子程序:EditTest 158
12.6.6 实例 159
12.7 按钮控制按钮 159
12.7.1 对按钮消息的响应 159
12.7.2 实例 159
12.8 复选框和单选按钮 160
12.8.1 创建复选框和单选按钮 160
12.8.2 查询选择框的状态 160
12.8.4 响应复选框和单选按钮消息 161
12.9 成组框 161
12.8.3 修改选择框的状态 161
12.9.1 创建成组框 162
12.9.2 响应成组框消息 162
12.9.3 程序范例:BtnTest 162
12.10 滚动条 162
12.10.1 创建滚动条对象 163
12.10.2 查询滚动条 163
12.10.3 修改滚动条 164
12.10.4 响应滚动条事件 164
12.11 传递控制数据 166
12.11.1 定义传输缓冲器 166
12.10.5 范例程序:SBarTest 166
12.11.2 创建控制和使能缓冲器 168
12.11.3 传输数据 168
12.11.4 为控制自定义传输 169
12.11.5 数据传输范例 169
12.12 实例 169
第十三章 建立自己的控制对象 194
13.1 修改预定义控制 194
13.1.1 修改生成方式 194
13.1.2 修改预定义消息响应 195
13.2 使用用户控制 196
13.2.1 设计一个用户控制 196
14.2 构造MDI窗口 198
14.1.1 每个MDI窗口都是一个对象 198
第十四章 MDI对象 198
14.1 MDI应用程序的组成 198
14.2.1 构造MDI主窗口 199
14.2.2 构造MDI子窗口 199
14.3 MDI应用程序中的消息处理 200
14.4 管理MDI子窗口 200
14.4.1 子窗口的活动性 200
14.4.2 子窗口菜单 200
14.5 MDI应用程序范例 201
14.6 多文档界面(MDI)实例 201
14.6.1 MDI应用程序 201
14.6.2 MDI消息循环 202
14.6.3 MDI消息 203
14.6.4 主窗口(Frame Window)和子窗口函数 203
14.6.5 MDI实例 203
第十五章 流对象 211
15.1 I/O流(iostream)库 211
15.2 重载的<<和>>操作符 212
15.3 流类的TStreamable 213
15.4 流管理器 213
15.5 流类的构造函数 215
15.7.1 同流管理器码连接 216
15.6 流类名称 216
15.7 使用流管理器 216
15.7.2 创建流对象 217
15.7.3 使用流对象 217
15.8 流集合 217
15.8.1 使Array变为流类 218
15.8.2 流构造函数 218
15.8.3 StreamableName成员函数 219
15.8.4 流的读函数 220
第十六章 构造Windows应用程序 221
16.1.3 编译和连接WHELLO 222
16.1.2 理解模块定义文件 222
16.1.1 理解资源文件 222
16.1 在集成环境中编译和连接 222
16.2 WinMain 224
16.3 从命令行编译和连接 224
16.3.1 从命令行进行编译 224
16.3.2 从命令行进行连接 225
16.3.3 使用制作文件 226
16.4 入口和出口 227
16.4.1 Windows All Functions Exportable(-W) 227
16.4.2 Windows Explicit Functions Exported(-WE) 227
16.4.7 入口、出口与输出:小结 228
16.4.6 _export关键字 228
16.4.4 Windows DLL ALL Functions Exportable(-WD) 228
16.4.5 Windows DLL Explicit Functions Exported(-WDE) 228
16.4.3 Windows Smart Callback(-WS) 228
16.5 存储模式 229
16.6 模块定义文件 230
16.6.1 快速示例 230
16.7 Windows程序的连接 231
16.7.1 在集成环境中连接 231
16.7.2 用TLINK来连接 231
16.8 动态链接库 233
16.8.2 从命令行编译连接一个动态链接库 234
16.8.1 在集成环境中编译和连接动态链接库 234
16.8.3 创建动态链接库 235
第十七章 RC:Windows资源编译器 239
17.1 创建资源 239
17.2 添加资源到可执行文件中 239
17.2.1 从IDE中编译资源 240
17.2.2 从命令行编译资源 240
17.2.3 从制作文件中编译资源 240
17.3 资源编译器句法 240
第十八章 动态链接库(DLL) 242
18.1 静态链接与动态链接 242
18.2 输入库 242
18.3 DLL代码结构 243
18.4 创建一个DLL 245
18.5 在Windows应用程序中使用DLL 246
第十九章 用ObjectWindows进行Windows编程 249
19.1 使用ObjectWindows的Windows应用程序结构 249
19.1.1 WinMain函数 249
19.1.2 消息循环 250
19.1.3 窗口过程 250
19.2 工程文件 251
19.2.1 模块定义文件 251
19.3 为ObjectWindows应用程序使用IDE 252
19.2.4 库文件、DLLs和输入库 252
19.2.3 C++源文件 252
19.2.2 资源文件 252
19.4 ObjectWindows程序设计实例 253
19.4.1 基本的窗口例子 253
19.4.2 画线的例子 257
19.4.3 画弧的例子 258
19.4.4 填充图形例子 260
19.4.5 文本输出例子 261
19.4.6 制表文本输出例子 263
19.4.7 滚卷例子 265
19.4.8 加速键例子 266
19.4.9 位图例子 270
19.4.10 光标例子 272
19.4.11 对话例子 273
19.4.12 图标例子 277
19.4.13 菜单例子 280
19.4.14 MDI例子 283
第三部分 程序实例 286
第二十章 Windows程序实例 286
20.1 编译Windows程序 286
20.2 Windows程序结构 290
20.3 鼠标应用范例(一) 301
20.4 鼠标应用范例(二) 307
20.5 剪贴程序 312
20.6 计时器的使用方式 318
20.7 监视内存 328
20.8 综合时钟应用程序 333
20.9 图标运用范例 343
20.10 光标运用范例 350
20.11 滚动条实例程序 357
第二十一章 Windows下的Turbo Debugger(TDW) 378
21.1 运行TDW的要求 378
21.2 安装TDW 378
21.3 配置TDW 379
21.3.1 使用TDW命令行选项 379
21.4 使用TDW 380
21.3.2 和TDW一起使用TDINST 380
21.4.1 记录窗口信息 381
21.4.2 获得内存和模块列表 385
21.5 调试动态链接库(DLL) 387
21.5.1 使用Load Modules or DLL对话框 388
21.5.2 向DLLs Programs列表添加一DLL 389
21.5.3 在DLL中设置调试选项 389
21.5.4 控制TDW装入DLL符号表 390
21.5.5 调试DLL启动代码 390
21.6 把内存句柄变换为地址 391
21.6.1 调试要点 391
21.7 TDW错误信息 392
第二十二章 调试—标准Windows应用程序 393
22.1 演示程序 393
22.2 编译及连接演示程序 393
22.3 调试BCWDEMOA 394
22.3.1 决定做什么 394
22.3.2 终止BCWDEMOA 394
22.3.3 记载信息 395
22.3.4 分析信息记录 395
22.3.5 发现错误 395
22.3.6 结束BCWDEMOA 398
22.4.2 测试程序 399
22.4.1 切换到程序外部 399
22.4 调试BCWDEMOB 399
22.4.3 决定做什么 400
22.4.4 比较全局存储列表 400
22.4.5 发现错误——一种功能方法 401
第二十三章 调试ObjectWindows应用程序 403
23.1 程序介绍 403
23.1.1 Colar Scribble窗口类定义 404
23.1.2 创建应用程序 405
23.2 调试程序 405
23.2.1 发现第一个错误 405
23.2.2 发现画笔颜色错误 407
23.2.3 发现离开屏幕进行绘图的错误 410
23.2.4 发现删除屏幕错误 412
第二十四章 用于Windows的Turbo Profiler 414
24.1 安装TPROFW 414
24.1.1 安装TDDEBUG.386 415
24.2 配置TPROFW 415
24.2.1 使用TPROFW的命令行选项 415
24.2.2 使用TFINST配置TPROFW 416
24.3 使用TPROFW 416
24.3.1 剖析Windows过程 417
24.3.2 剖析动态链接库(DLL) 418
24.4 TPROFW出错信息 419