《WINDOWS 编程指南》PDF下载

  • 购买积分:31 如何计算积分?
  • 作  者:
  • 出 版 社:
  • 出版年份:2222
  • ISBN:
  • 页数:1271 页
图书介绍:

目录 1

序言 1

第一章 何谓Windows程序 1

1.1 Windows简史 2

1.2 从用户观点看Windows 3

1.2.1 图形用户接口(GUI) 3

1.2.2 GUI概念和原理 4

1.2.3 一致的用户接口 4

1.2.4 多任务的优点 6

1.2.5 内存管理 7

1.2.6 与设备无关的图形接口 8

1.2.7 MS-DOS应用程序 9

1.3.1 Windows和MS-DOS 10

1.3 从程序员观点看Wndows 10

1.3.2 Windows的任务 11

1.3.3 函数调用 11

1.3.4 动态链接 12

1.3.5 面向对象的程序设计 14

1.3.6 消息驱动的体系结构 14

1.3.7 窗口过程 15

1.4 第一个Windows程序设计 16

1.4.1 程序的问题 17

1.4.2 HELLOWIN文件 18

1.4.3 MAKE文件 23

1.4.4 C源程序文件 26

1.4.5 Windows函数调用 26

1.4.6 大写标识符 27

1.4.7 新数据类型 28

1.4.9 匈牙利表示法 30

1.4.8 获取句柄 30

1.4.10 程序入口点 32

1.4.11 注册窗口类 33

1.4.12 建立窗口 37

1.4.13 显示窗口 39

1.4.14 消息循环 40

1.4.15 窗口过程 43

1.4.16 处理消息 44

1.4.17 WM_PAINT消息 45

1.4.18 WM_DESTROY消息 47

1.4.19 模块定义文件 48

1.5 Windows程序设计 49

1.5.1 不同的调用方式 50

1.5.2 排队和非排队消息 52

1.5.3 非抢先多任务 54

1.5.4 学习的过程 55

第二章 文本画面 57

2.1 绘图和重画 58

2.1.1 WM_PAINT消息 58

2.1.2 有效矩形和无效矩形 59

2.2 GDI简介 60

2.2.1 设备环境 61

2.2.2 获取环境句柄(方法一) 62

2.2.3 绘图信息结构 63

2.2.4 获取环境句柄(方法二) 66

2.2.5 TextOut(细节) 66

2.2.6 系统字模 68

2.2.7 字符尺寸 69

2.2.8 文本点阵(细节) 70

2.2.9 格式文本 70

2.2.10 示范程序 73

2.2.11 SYSMETS1.C窗口过程 81

2.2.12 空间不够 83

2.2.13 工作区尺寸 84

2.3 滚动条 85

2.3.1 滚动条的范围和位置 87

2.3.2 滚动条消息 88

2.3.3 滚动条程序SYSMETS 90

2.3.4 组织绘图程序 97

2.3.5 建立更佳的滚动条 99

2.3.6 无鼠标操作 108

第三章 键盘 109

3.1 键盘基础知识 109

3.1.1 键盘驱动程序 110

3.1.2 舍弃某些键盘消息 111

3.1.3 谁是输入点 112

3.1.4 击键和字符 113

3.2 击键消息 114

3.2.1 系统击键与非系统击键 114

3.2.2 lParam变量 116

3.2.3 虚拟键码 118

3.2.4 Shift状态 122

3.2.5 使用击键消息 123

3.3 在SYSMETS中增加键盘接口 124

3.3.1 增加WM_KEYDOWN逻辑 125

3.3.2 发送消息 127

3.4 字符消息 138

3.4.1 WM_CHAR消息 141

3.4.2 死字符消息 142

3.5 浏览键盘消息 143

3.6.1 插入记号函数 152

3.6 插入记号(不是光标) 152

3.6.2 TYPE程序 154

3.7 WINDOWS字符集 165

3.7.1 OEM字符集 166

3.7.2 ANSI字符集 168

3.7.3 OEM、ANSI及字模 168

3.8 国际化问题 169

3.8.1 使用字符集 170

3.8.2 与MS-DOS对话 171

3.8.3 使用数字小键盘 173

第四章 鼠标 174

4.1 鼠标基础知识 174

4.1.1 快速定义 174

4.2 工作区的鼠标消息 175

4.2.1 简单鼠标处理举例 177

4.2.2 POINT、RECT和1Param 184

4.2.3 对Shift键的处理 186

4.2.4 鼠标的双选 187

4.3 非工作区的鼠标消息 188

4.3.1 击中测试消息 190

4.3.2 消息来源于消息 191

4.4 程序中的击中测试 192

4.4.1 一个假设的例子 193

4.4.2 程序举例 194

4.4.3 用键盘来模拟鼠标 199

4.4.4 在CHECKER中增加键盘接口 202

4.4.5 使用子窗口代替击中测试 209

4.4.6 CHECKER中的子窗口 210

4.5 捕获鼠标 219

4.5.1 BLOWUP1程序 219

4.5.2 改变鼠标光标形状 225

4.5.3 StretchBlt调用 227

4.5.4 画出捕获的块 227

第五章 计时器 229

5.1 计时器基础知识 231

5.1.1 SYSTEM.DRV和Windows计时器 231

5.1.2 计时消息不是异步的 233

5.2 使用计时器的三种方法 234

5.2.1 第一种方法 235

5.2.2 无计时器可用时如何处理 236

5.2.3 程序举例 239

5.2.4 第二种方法 245

5.2.5 程序举例 248

5.2.6 正确使用反调用函数 252

5.3 计时器用于状态报告 255

5.2.7 第三种方法 255

5.3.1 有创造性地使用图标 261

5.3.2 强制变成图标 262

5.3.3 保持图标为图标 263

5.3.4 计算可用内存 263

5.3.5 使用浮点运算 264

5.4 使用计时器作时钟 264

5.4.1 对弹出窗口定位及给出大小 272

5.4.2 获得日期和时间 272

5.4.3 国际化 272

5.5 Windows的标准时间 274

第六章 子窗口控制 276

6.1 按钮类 278

6.1.1 建立子窗口 284

6.1.2 子窗口与父窗口对话 286

6.1.3 父窗口与子窗口对话 287

6.1.4 PUSH按钮 288

6.1.5 检查框(check box) 290

6.1.6 收音机按钮(radio button) 291

6.1.7 GROUP框 292

6.1.8 用户定义按钮 292

6.1.9 改变按钮正文 292

6.1.10 可见的与可用的按钮 293

6.1.11 按钮与输入点 294

6.2 控制及颜色 295

6.2.1 系统颜色 296

6.2.2 按钮颜色 298

6.2.3 WM_CTLCOLOR消息 299

6.3 静态类(static class) 302

6.4 滚动条类(scrollbar class) 304

6.4.1 COLORS1程序 306

6.4.2 自动键盘接口 316

6.4.3 窗口子类(windows subclassing) 317

6.4.4 加背景色 318

6.4.5 对滚动条上色 320

6.4.6 处理多种事例 321

6.4.7 将COLORS1作为图标 322

6.5 编辑类(edit class) 322

6.5.1 编辑类模式 327

6.5.2 编辑控制通知单(Edit Control Notification) 328

6.5.3 使用编辑控制 329

6.5.4 向编辑控制发送的消息 329

6.6 目录框类(listbox class) 331

6.6.1 目录框样式 332

6.6.2 在目录框中放入字符串 333

6.6.3 选择和摘取输入 335

6.6.4 从目录框接受消息 337

6.6.5 目录框应用程序举例 338

6.6.6 显示文件目录 344

6.6.7 Windows的头 346

6.6.8 2KB的空间浪费 355

第七章 内存管理 356

7.1 INTEL存储器的段模式 358

7.2 Windows的内存组织 359

7.2.1 固定段与可移动段 361

7.2.2 可淘汰内存 362

7.2.3 全局内存表 364

7.2.4 局部内存 365

7.3 代码段和数据段 367

7.3.1 小型、中型、紧凑性、大型和巨型存储模式 367

7.3.2 多代码段 369

7.3.3 紧凑存储模式和大存储模式 371

7.3.4 避免移动 373

7.3.5 程序段属性 374

7.4 Windows如何移动与重装入程序段 377

7.4.1 远程函数的特殊处理 378

7.4.2 Windows执行程序 382

7.4.3 MakeProcInstance的作用 384

7.4.4 动态链接库带来的差异 386

7.4.5 栈探测 387

7.4.6 扩充存储器 388

7.4.7 保护方式 390

7.5 在程序内部申请空间 391

7.5.1 存储块锁定 392

7.5.2 一个快速示例 393

7.5.3 全局内存函数 394

7.5.4 其它的内存函数 397

7.5.5 使用可淘汰全局内存 399

7.5.6 巨型全局内存块 400

7.5.7 局部内存分配 403

7.5.8 其它的局部内存函数 406

7.5.9 锁定自己的数据段 407

7.5.10 内存分配的“捷径” 408

7.5.11 使用C的内存函数 410

7.5.12 在保护方式下运行 411

第八章 图标、光标、位图和字符串 413

8.1 资源编译 414

8.2 图标与光标 417

8.2.1 SDKPAINT工具 422

8.2.2 取得图标句柄 426

8.2.3 在程序中使用图标 428

8.2.4 使用侯选光标的语句 429

8.3 资源与内存 430

8.3.1 位图:象素点图画 431

8.3.2 使用位图和画刷 432

8.4 字符串 438

8.4.1 使用字符串资源 438

8.4.2 在消息框中使用字符串 439

8.4.3 字符串与内存空间 441

8.4.4 用户自定义资源 442

第九章 菜单与加速键 456

9.1 菜单 456

9.1.1 菜单结构 457

9.1.2 菜单样本 458

9.1.3 应用程序中如何调用菜单 462

9.1.4 菜单和消息 464

9.1.5 范例 468

9.1.6 菜单格式 478

9.1.7 定义菜单的另一种格式 479

9.1.8 定义菜单的第三种途径 481

9.1.9 浮动的弹出式菜单 481

9.1.10 系统菜单的使用 490

9.1.11 修改菜单 496

9.1.12 其它菜单命令 496

9.1.13 一个非正规的菜单 498

9.2 菜单中使用位图 506

9.2.1 利用位图作为菜单项的两种方法 520

9.2.2 内存设备环境 521

9.2.3 用程序建立位图 522

9.2.4 位图的变形调整 523

9.2.5 完整菜单的形成 525

9.2.6 增加键盘操作界面 527

9.3.1 为什么要使用加速键 528

9.3 加速键 528

9.3.2 加速键定义的一些规则 529

9.3.3 加速键表 530

9.3.4 装入加速键表 533

9.3.5 加速键的转换 533

9.3.6 接收加速键消息 535

9.3.7 用菜单和加速键编写的POPPAD程序 536

9.3.8 菜单项能否执行的判别 546

9.3.9 菜单项的处理 547

第十章 会话框 552

10.1 标准会话框 553

10.1.1 建立“About”会话框 553

10.1.2 会话框样本 559

10.1.3 会话框过程 562

10.1.5 会话框的启动 564

10.1.4 会话框过程的卸出 564

10.1.6 进一步讨论会话框样式 566

10.1.7 其它会话框控制 568

10.1.8 一个稍复杂的会话框 571

10.1.9 会话框中控制的处理 581

10.1.10 OK和Cancel按钮 585

10.1.11 控制的分组 587

10.1.12 会话框中绘图 590

10.1.13 在会话框中使用其它函数 591

10.1.14 自定义控制 591

10.2 消息框 602

10.2.1 Assertion消息框 604

10.2.2 用消息框显示有关消息 606

10.3 POPPAD程序的文件菜单项功能 607

10.3.1 O penFile函数 607

10.3.2 文件输入输出的两种方式 611

10.3.3 Open和Save菜单项的会话框 615

10.3.4 DlgDirList函数和DlgDirSelect函数 627

10.3.5 获取合法文件名 629

10.3.6 新版的POPPAD程序 630

10.4 非标准会话框 652

10.4.1 标准会话框和非标准会话框之间的区别 653

10.4.2 新版的COLORS程序 655

10.4.3 HEXCALC程序是窗口还是会话框 664

10.4.4 控制标识符的有效使用 675

10.5 会话框实用程序的使用 676

第十一章 GDI引言 681

11.1 GDI原理 681

11.2 设备环境(DC) 684

11.2.1 获取设备环境句柄 684

11.2.2 获取设备环境信息 687

11.2.3 DEVCAPS1程序 688

11.2.4 设备尺寸 707

11.2.5 查找色彩信息 709

11.2.6 设备环境属性 711

11.2.7 保存设备环境 712

11.3 映射方式 715

11.3.1 设备坐标和逻辑坐标 717

11.3.2 设备坐标 718

11.3.3 视口和窗口 719

11.3.4 使用MM_TEXT方式工作 721

11.3.5 “Metric”映射方式 726

11.3.6 “Roll Your Own”映射方式 729

11.3.7 WHATSIZE程序 737

12.1 画点 745

第十二章 作图 745

12.2 画线 746

12.2.1 使用库存画笔 749

12.2.2 生成、选择、删除画笔 751

12.2.3 避免设备依赖性 756

12.2.4 在隙间填充 757

12.2.5 作图方式 757

12.2.6 ROP2和色彩 767

12.3 绘制填充区域 769

12.3.1 有界图形 771

12.3.2 ARCS程序 777

12.3.3 饼图的三角学 784

12.3.4 Polygon函数和Polygon填充方式 787

12.3.5 涂刷图形内部 789

12.3.6 画刷和位图 793

12.3.7 生成和使用位图画刷 795

12.3.8 画刷的定位 799

12.4 矩形、区域和裁剪 803

12.4.1 对矩形进行工作 804

12.4.2 生成和绘制区域 806

12.4.3 对矩形和区域进行裁剪 808

12.4.4 CLOVER程序 809

12.5 杂类GDI函数 817

12.6 永久绘图程序 825

第十三章 位图、位块传输和图元文件 835

13.1 旧位图格式 837

13.1.1 在程序中生成位图 837

13.1.2 单色位图格式 840

13.1.3 彩色位图格式 841

13.1.4 位图的大小 842

13.2.1 DIB文件 843

13.2 设备无关位图 843

13.2.2 生成一个DIB 846

13.3 内存设备环境 848

13.4 强有力的BLT 850

13.4.1 patBlt函数 851

13.4.2 块传递(BLT)坐标 854

13.4.3 使用BitBlt传递位 856

13.4.4 DrawBitmap程序 858

13.4.5 使用不同的ROP代码 860

13.4.6 内存设备环境更有趣的应用 863

13.4.7 色彩转换 869

13.4.8 映射方式的转换 871

13.4.9 使用StretchBlt扩展位图 871

13.4.10 动画 873

13.5 图元文件 880

13.5.1 内存图元文件的简单应用 881

13.5.2 在磁盘上存放图元文件 884

13.5.3 使用已存在的图元文件 886

13.5.4 把图元文件作为源 890

13.5.5 查看图元文件 896

13.5.6 图元文件做什么、不做什么 898

第十四章 文本和字模 901

14.1 简单文本输出 901

14.1.1 文本输出函数 901

14.1.2 文本的设备环境属性 904

14.1.3 使用矢量字体 905

14.1.4 使字符串变灰 907

14.1.5 GrayString的简单用法 910

14.1.6 不用GrayString而使字符串变灰 910

14.2.1 字模的类型 911

14.2 字体的背景知识 911

14.2.2 话题1:系列和字样 913

14.2.3 字体资源文件 916

14.2.4 话题2:关于“点” 918

14.2.5 为什么要使用逻辑英寸 919

14.2.6 话题3:leading和spacing 920

14.2.7 逻辑“TWIPS”映射方式 921

14.3 创建、选择和删除逻辑字体 923

14.3.1 字体选择及定义 939

14.3.2 逻辑字体结构 940

14.3.3 字模端射算法 946

14.3.4 找出字模 947

14.4 枚举字体 950

14.5 文本格式化 969

14.5.1 单行文本对齐 970

14.5.2 段落处理 972

第十五章 使用打印机 991

15.1 打印、假脱机(spooling)和Escape 992

15.2 打印机设备环境(device context) 997

15.2.1 获得CreateDC参数 998

15.2.2 重新考虑 1002

15.2.3 DeviceMode调用 1013

15.2.4 检查BitBlt性能 1016

15.3 打印基础 1017

15.3.1 Escape函数 1017

15.3.2 FROMFEED 1018

15.4 打印图形和文本 1022

15.4.1 裸机打印 1027

15.4.2 设置终止过程 1030

15.4.3 Windows如何使用AbortProc 1033

15.4.4 实现终止过程 1034

15.4.5 增加打印对话框 1040

15.4.6 在POPPAD中增加打印 1048

15.4.7 处理错误码 1058

15.5 段技术 1060

15.5.1 讨论段技术 1061

15.5.2 以不同的方式使用终止过程 1065

15.6 打印机和字模 1073

第十六章 剪接板 1076

16.1 初步使用剪接板 1076

16.1.1 标准剪接板数据格式 1077

16.1.2 向剪接板传送文本 1078

16.1.3 从剪接板得到文本 1080

16.1.4 剪接板功能 1081

16.1.5 打开和关闭剪接板 1082

16.1.6 使用剪接板操作拉图 1083

16.1.7 BLOWUP程序的改进版本 1084

16.1.8 图元文件和图元文件图象 1093

16.2 剪接板的高级用法 1100

16.2.1 多数据项的使用 1101

16.2.2 延迟涂抹 1103

16.2.3 私有数据格式 1105

16.3 编写剪接板视窗 1109

16.3.1 剪接板视窗链 1109

16.3.2 剪接板视窗函数和消息 1110

16.3.3 一个简单的剪接板视窗 1114

第十七章 动态数据交换(DDE) 1120

17.1 基本概念 1121

17.1.1 应用、主题和项(application、topic和item) 1121

17.1.2 会话的类型 1122

17.1.3 字符串和原子(atoms) 1128

17.2 DDE服务器程序样本 1130

17.2.1 DDEPOP程序 1152

17.2.2 WM_DDE_INITIATE消息 1153

17.2.3 ServerProc窗口过程 1154

17.2.4 WM_DDE_REQUEST消息 1155

17.2.5 DDEPOP的PostDataMessage函数 1157

17.2.6 WM_DDE_ADVISE消息 1158

17.2.7 修改项 1161

17.2.8 WM_DDE_UNADVISE消息 1162

17.2.9 WM_DDE_TERMINATE消息 1162

17.3 DDE顾客程序样本 1163

17.3.1 开始DDE会话 1176

17.3.2 WM_DDE_DATA消息 1178

17.3.3 WM_DDE_TERMINATE消息 1179

17.4 异常情况下的处理 1180

18.1 MDI的要素 1181

第十八章 多文件界面 1181

18.2 WINDOWS 3和MDI 1183

18.3 样本程序 1185

18.3.1 三个菜单 1206

18.3.2 程序初始化 1207

18.4 创建子窗口 1209

18.5 框架窗口消息处理 1210

18.6 子文件窗口 1212

18.7 窗口过程的效力 1215

第十九章 动态链接库 1216

19.1 库基本概念 1216

19.1.1 “库”字的多种含义 1218

19.1.2 用EXEHDR检查库 1219

19.2 STRPROG和STRLIB 1221

19.2.1 STRLIB库 1222

19.2.2 生成文件的不同之处 1227

19.2.3 库的入口点 1228

19.2.4 STRLIB的函数 1230

19.2.5 库模块定义文件 1230

19.2.6 STRPROG程序 1231

19.2.7 运行STRPROG 1242

19.2.8 远程函数的引导代码 1243

19.2.9 反调函数的用途 1244

19.3 DS!=SS问题 1246

19.4 库的其它限制 1252

19.5 确定链接的几种不同方法 1253

19.6 利用输入库 1255

19.7 截获窗口函数调用 1259

19.8 无输入的动态链接 1261

19.9 资源库 1262