目录 1
简介 1
0.1 概述 1
0.2 所需的编程工具 2
第一部分 一般Windows编程 5
第一章 启动Borland C++ 5
1.1 运行安装程序 5
1.2 集成开发环境(IDE)的使用 10
1.2.1 启动IDE 10
1.2.2 使用IDE的菜单和窗口 10
1.3 配置Borland C++ 14
1.4 编写第一个C语言程序 16
1.4.1 理解C程序的结构 17
1.4.2 使用编辑器编写程序 21
1.4.4 程序是如何工作的 23
1.4.3 编译和运行程序 23
1.5 介绍库函数 24
1.5.1 使用一些基本的输入函数 25
1.5.2 使用一些基本的输出函数 27
1.5.3 使用一些格式转换函数 29
1.6 总结 31
第二章 Windows程序设计 32
2.1 关于Windows编程的一些说法 32
2.2 为什么要为Windows编程 33
2.3 发者的有利之处 33
2.4 对Windows编程环境的理解 34
2.4.1 Windows是多任务环境 34
2.4.2 Windows是面向对象的环境 35
2.5 Windows资源 42
2.5.1 Windows资源的类型 42
2.7 fcwin.c例子程序所需的资源 44
2.5.2 资源文件类型 44
2.6 用资源工作 44
2.8 定制FCWIN资源 49
2.9 总结 56
第三章 Windows编程工具 58
3.1 WinSpector应用 58
3.1.1 启动WinSpector应用 58
3.1.2 Perferences对话框 58
3.1.3 Directory选项 59
3.1.4 Viewer选项 59
3.1.5 Append New Reports选项 59
3.1.9 Post-Mortem Dump选项 60
3.1.12 解释日志文件 60
3.1.11 User Comments选项 60
3.1.10 Stack Frame Data选项 60
3.1.8 Summary To AUX选项 60
3.1.7 System Information选项 60
3.1.6 Overwrite Pevious Reports选项 60
3.2 WinSight应用 73
3.2.1 启动 74
3.2.2 选择察看 74
3.2.3 使用窗口树 75
3.2.4 窗口树显示格式 75
3.2.5 扩展及关闭窗口树 75
3.2.6 定位一个窗口 75
3.2.7 记录窗口 76
3.2.8 窗口类的工作 77
3.2.9 选择被跟踪消息 77
3.3 Turbo Debugger for Windows 79
3.3.1 调试准备 79
3.3.2 使用Tubo Debugger 82
3.3.3 使用高级调试特征 88
3.4 总结 89
第四章 设计Windows应用程序的方法 91
4.1 建立Windows应用程序环境 91
4.1.1 建立你自己的Windows Stub可执行文件 91
4.1.2 理解Windows目录的使用 93
4.1.3 示例设计fcwin.c 94
4.2 为Windows应用程序建立源文件 123
4.2.1 熟悉Windows编程环境 124
4.2.2 建立一个模块定义文件 124
4.2.3 设计程序的头文件 125
4.2.4 为FCWIN构造工程文件 127
4.3 总结 128
5.1 设计Windows接口 129
5.1.1 登录窗口类 129
第五章 编写Windows应用程序 129
5.1.2 建立主消息循环 134
5.1.3 写WndProc()函数 135
5.1.4 为对话框设置回调函数 136
5.1.5 建立对话框函数 137
5.1.6 控制对话框 138
5.1.7 使用MessageBox()函数来建立弹出帮助和错误信息帮助 139
5.1.8 假脱机硬拷贝到Windows打印管理器 141
5.2 使用动态链接库(DLL) 148
5.2.1 理解DLLs 149
5.2.2 编写一个DLL应用程序 150
5.3 总结 154
第二部分 动态数据交换 157
第六章 动态数据交换概念 157
6.1 DDE协议 157
6.1.3 会话初始化 158
6.1.1 会话的同步 158
6.1.2 应用程序名、标题名和项目名 158
6.1.4 会话中的交换 159
6.1.5 会话终止 160
6.1.6 DDE消息 160
6.2 动态数据交换管理库——DDEML 174
6.2.1 回调函数 174
6.2.2 DDEML应用程序 175
6.2.3 服务名、标题名和项目名 175
6.2.4 DDEML事务 176
6.3 总结 178
第七章 DDEML会话管理 179
7.1 DDEML的初始化过程 179
7.1.1 初始化应用程序——DdeInitialize() 179
7.1.2 登记服务名 182
7.1.3 错误捕获——DdeGetLastError() 183
7.1.4 释放DDEML资源——DdeUninitialize() 185
7.2 会话管理 185
7.2.1 运用标题名 185
7.2.2 建立一个会话——DdeConnect() 186
7.2.3 建立多个会话——DebeConnectList()和DdeQueryNextServer 188
7.2.4 获取会话信息——DdeQueryConvInfo() 189
7.2.5 结束一个会话——DdeDisconnect()和DdeDisconnectList() 190
7.2.6 重建一个终止了的会话——DdeReconnect 190
7.3 DDEML客户机和服务器应用程序举例 190
7.3.1 DDEML服务器应用程序举例 191
7.3.2 DDEML客户机应用程序举例 206
7.4 总结 225
第八章 DDEML事务管理 226
8.1 DDEML字符串管理 226
8.1.3 获得和比较字符串 227
8.1.2 递增和递减参考计数 227
8.1.1 创建字符串句柄 227
8.2 DDEML数据管理 229
8.2.1 创建全局内存对象 229
8.2.2 存取全局内存对象 229
8.2.3 释放全局内存对象 230
8.3 事务管理 231
8.3.1 DDEML事务——DdeClientTransaction() 232
8.3.2 事务控制 239
8.4 程序例子——TICKER和QUOTE 241
8.4.1 应用程序设计 242
8.4.2 一个DDEML客户应用程序——TICKER 242
8.4.3 一个DDEML服务器应用程序——QUOTE 271
8.5 总结 297
第九章 DDEML监视器应用程序 298
9.1 监视器应用程序的初始化 298
9.2 监视程序结构 299
9.3 DDEMON——DDE监视程序举例 302
9.4 总结 355
第三部分 对象链接与嵌入 359
第十章 对象链接与嵌入概念 359
10.1 对象和文档 359
10.2 链接与嵌入 360
10.3 打包 360
10.4 登记数据库 360
10.5 剪贴板 361
10.6 OLE应用程序 362
10.6.1 客户应用程序 363
10.7 总结 363
10.6.2 服务器应用程序 367
第十一章 OLE服务器应用程序 370
11.1 POLY.EXE:一个OLE服务器应用程序 370
11.1.1 头文件编译举例 371
11.1.2 WinMain:应用程序初始化和终止 378
11.1.3 主窗口处理模块 388
11.1.4 多边形窗口处理 397
11.1.5 服务器分类 400
11.1.6 文档分类 404
11.1.7 文档管理 408
11.1.8 对象方法 413
11.1.9 对象管理 420
11.1.10 文件输入输出 432
11.1.11 菜单和杂类处理 443
11.1.12 对话框过程 449
11.1.13 支持模块 451
11.2 总结 459
第十二章 OLE客户应用程序 460
12.1 OLECLNT.EXE:一个OLE客户应用程序 460
12.1.1 程序例子头文件 461
12.1.2 WinMain:应用程序初始化和终止 468
12.1.3 主窗口处理模块 474
12.1.4 拖放 478
12.1.5 对象窗口处理 480
12.1.6 客户回调和流方法 485
12.1.7 文档管理 488
12.1.8 对象管理 507
12.1.9 会话和对象插入 523
12.1.10 剪贴板处理 532
12.1.11 链接管理 535
12.1.12 登记数据库存取 548
12.1.13 菜单处理 553
12.1.14 支持模块 557
12.2 总结 570
13.1.1 输入库 571
第十三章 对象处理程序 571
13.1 动态链接库的概念 571
13.1.2 动态链接库的组成成员 572
13.1.3 动态链接库的优点 573
13.2 POLYHAND.DLL:动态链接库对象句柄 573
13.2.1 对象句柄登记 573
13.2.2 对象句柄的输入和输出函数 574
13.2.3 对象句柄函数管理 574
13.2.4 对象创建函数与OLE API的不同点 576
13.2.5 实例程序 577
13.3 总结 596
第四部分 剪贴板和动态链接库 599
第十四章 剪贴板的使用方法 599
14.1 剪贴板使用的数据格式 600
14.2 文本数据与剪贴板 600
14.2.1 剪切或复制文本数据到剪贴板 601
14.2.2 粘贴文本数据到应用程序 602
14.3 图形数据与剪贴板 611
14.4 虚拟文件图与剪贴板 619
14.4.1 剪切或复制虚拟文件图到剪贴板 620
14.4.2 粘贴虚拟文件图到应用程序 621
14.5 剪贴板的高层使用技巧 629
14.5.1 数据格式多样化 629
14.5.2 延迟提供数据给剪贴板的时间 630
14.5.3 使用自定义的剪贴板格式 631
14.5.4 剪贴板内容显示程序 633
第十五章 动态链接函数库 641
15.1 什么是动态链接函数库 642
15.1.1 静态链接与动态链接 642
15.1.2 动态链接函数库与一般应用程序间的差异 644
15.1.5 使用动态链接函数库的优点 645
15.1.4 Windows如何找到动态链接函数库 645
15.1.3 目标函数库与导入函数库 645
15.1.6 查看动态链接函数库的内容 646
15.2 自行设计动态链接函数库 647
15.2.1 动态链接函数库的入口 648
15.2.2 LibMain()函数 649
15.2.3 WEP()函数 650
15.2.4 动态链接函数库的模块定义文件 651
15.3 动态链接函数库的调用方式 657
15.3.1 输入动态链接函数库中的函数的方法 658
15.3.2 远程函数调用 659
15.3.3 DS!=SS的衍生问题 660
15.3.4 动态链接函数库的重要限制 662
15.4 动态链接的高层技巧 675
15.4.1 回调函数的运用 675
15.4.3 善用输入函数库 677
15.4.2 应用程序指定链接的方法 677
15.5 动态链接函数库的使用扩展 693
15.5.1 无需事先输入函数的动态链接方式 693
15.5.2 仅含资源的动态链接函数库 694
15.5.3 内存对象的归属权 694
15.6 其他需要运用动态链接函数库的时机 700
15.6.1 挂接与动态链接函数库 700
15.6.2 驱动程序与动态链接函数库 701
15.6.3 用户自定义的子控制 702
第五部分 附录 717
附录A OLE和DDEML使用 717
附录B 动态数据交换函数和消息 718
附录C 剪贴板函数和消息 742
附录D 对象链接与嵌入函数和消息 755
附录E 安装、启动、退出中文Windows 781