《如何开发Windows 95 应用程序》求取 ⇩

第一章 32位Windows介绍1

1.1 32位计算的优点1

1.1.1 线性编程模式1

1.1.2 更大的数据和可用地址空间2

1.1.3 不需要复杂的编译器支持3

1.1.4 优化为32位模式的处理器4

1.2 了解目标平台5

1.2.1 判断基本类型的长度7

1.2.2 Intel 386/486寄存器集合8

1.2.3 MIPS R400和R4400处理器13

1.2.4 DEC Alpha AXP20

1.3 小结21

1.4 如何阅读MAP文件21

第二章 移植到Win3225

2.1 两个代码基:一个用于Win16,一个用于Win3225

2.1.1 处理makefile的问题26

2.1.2 数据类型长度的改变27

2.1.3 窗口消息的改变31

2.1.4 API调用的改变33

2.1.5 分段体系结构问题34

2.1.6 直接硬件访问34

2.1.7 WIN.INI和SYSTEM.INI的直接访问35

2.1.8 无文档说明的函数和内部变量的使用35

2.1.9 虚拟设备驱动程序(VXD)36

2.1.10 对hPrevInstance的依赖36

2.1.11 输入状态的改变37

2.1.12 对DOS的依赖37

2.1.13 移植汇编语言40

2.2 一个代码基:与Win16和Win32兼容41

2.2.1 C语言的方法41

2.2.3 移植用于控件的宏45

2.2.2 得到移植宏45

2.2.4 简易方案:使用应用程序框架46

2.2.5 把C代码基升级到可接受的层次46

2.2.6 把C程序作为C程序编译49

2.2.7 引入MFC对象50

2.2.8 MFC 2.x和MFC 3.0的比较50

2.3 关于MFC51

2.4 UNICODE支持51

2.4.1 MFC和多线程51

2.4.2 MFC的优点51

2.5 访问移植实验室52

2.5.1 DEC(数字设备公司)的Alpha处理器移植实验室53

第三章 形式替换54

3.1 编译型形式替换程序57

3.1.1 为形式替换程序编译器建立命令文件58

3.1.2 编译命令文件生成(.ASM)汇编文件59

3.2 编译型形式替换程序是如何运行的69

3.3 调试70

3.4 一般的形式替换程序70

3.5 万能形式替换程序72

3.5.1 登录形式替换程序73

3.5.2 脱离形式替换程序74

3.5.3 指针转换74

3.6 范例程序:ExitWindows32s76

3.7 Win16的开发90

3.7.1 与Win16应用程序并存90

3.7.2 NotifyRegister和Win32s91

3.8 小结92

第四章 进程的生存期93

4.1 对CreateProcess的深入考察93

4.1.1 可以被子进程继承的属性94

4.1.2 不能被继承的属性95

4.1.3 创建优先级标志和进程类型96

4.2 线程98

4.2.1 何时用附加线程99

4.2.2 线程创建100

4.2.3 挂起线程运行101

4.2.4 设置线程的优先级102

4.2.5 使用线程局部存储103

4.2.6 终止一个线程105

4.2.7 什么时候线程是不必要的105

4.3 重叠的I/O106

4.4 结构和进程创建API107

4.4.1 环境变量107

4.4.2 PROCESS_INFORMATION(进程信息)结构107

4.4.3 停止GUI进程107

4.5 Win16和Win32的区别108

4.4.4 同步108

4.6 同步对象109

4.6.1 关键段对象109

4.6.2 事件对象110

4.6.3 互斥对象111

4.6.4 信号量对象112

4.7 同步处理和GDI对象123

5.2 Windows 95和NT的虚拟内存管理124

5.1 Windows NT与Windows 95的差异124

第五章 Win32的内存管理124

5.3 内存API126

5.3.1 虚拟API126

5.3.2 VirtualFree128

5.3.3 保护页128

5.4 稀疏内存管理策略130

5.4.1 VirtualQuery130

5.5 Win32中的全局以及局部分配131

5.4.2 VirtualLock131

5.5.1 用标准C语言库函数操纵内存132

5.6 Win32新引入的堆API133

5.6.1 用于分配更多内存的堆分配函数134

5.6.2 用于取消一个堆的堆分配函数135

5.6.3 MFC C的new和delete函数135

5.6.4 跨进程内存管理136

5.6.5 共享内存DLL140

5.6.6 用于传输只读数据的WM COPYDATA141

5.6.7 ReadProcessMemory和WriteProcessMemory函数142

5.7 范例程序:读写内存145

5.8 Windows 95的可应用性169

5.9 小结170

第六章 登录171

6.1 登录的必要性171

6.2.1 键和值项173

6.2 登录的基本结构173

6.2.2 预定义句柄175

6.3 确保Windows NT启动的控制设置177

6.4 INI文件映射178

6.5 设置环境变量181

6.6 如何建立应用程序数据结构181

6.7 登录程序设计183

6.7.1 查询登录185

6.7.2 列举键和数值187

6.7.3 写入登录187

6.7.4 加密登录项188

6.7.5 存储和从磁盘文件中恢复登录188

6.7.6 连接一台远程机器189

6.7.7 下载SDK189

6.7.8 性能数据190

6.7.9 获取计数器数据195

6.8 范例程序:REGISTRAR196

6.9 小结200

6.10 从登录中提取的典型内容200

第七章 远程过程调用204

7.1 什么是RPC204

7.1.1 Win32 RPC与OSF/DCE205

7.1.2 RPC和数据转换205

7.2 开发RPC应用程序206

7.2.1 使用Microsoft界面定义语言定义一个界面206

7.2.2 GUID结构207

7.2.3 将类型属性与定义的类型关联209

7.2.4 RPC客户211

7.2.5 客户API联编函数213

7.2.6 RPC服务器217

7.3 范例程序:分布式make220

7.5 命名约定222

7.4 小结222

第八章 Windows 95和Win32的异常223

8.1 32位Windows中的异常225

8.1.1 内核中的未处理异常226

8.1.2 异常处理程序和过滤程序226

8.1.3 展开228

8.1.4 不要吞没异常232

8.2 软件产生的异常233

8.2.1 终断处理程序234

8.3 异常处理优先级237

8.4 对异常的调试238

8.5 结构化异常处理和Win32s239

8.6 结论240

第九章 编写控制台应用程序244

9.2 控制台应用程序中的挂接246

9.1 控制台应用程序不支持的功能246

9.3 定时器和控制台应用程序247

9.4 控制台与其它窗口的交互247

9.4.1 子类与控制台应用程序247

9.5 控制台应用程序的功能247

9.5.1 控制台句柄248

9.6 对控制台输入和输出的C运行时库支持252

9.6.1 GetLastError与errno253

9.7 在控制台应用程序中使用GUI功能256

9.8 控制台窗口与图形应用程序的组合258

9.8.1 使输出定向于控制台窗口259

9.8.2 接收控制台输入261

9.9 重定向标准输入/输出262

9.10 检测事件269

9.11 使用定时器271

9.10.1 控制台事件与信号271

9.12 断开进程272

9.13 从控制台应用程序中打印273

9.13.1 在运行时确定控制台程序277

9.14 小结280

第十章 32位操作系统——发展和特点281

10.1 不要两次犯同样的错误287

10.2 与Win16的兼容性287

10.3 基于32位模式288

10.4 多线程进程结构289

10.5 独立的地址空间289

10.6 稳定性289

10.7 对不同体系结构的支持291

10.7.1 SGI公司的MIPS R4x00291

10.7.2 DEC公司的Alpha AXP291

10.7.3 对称的多处理机制291

10.8 安全性292

10.9 Win32中没有的功能293

10.10 Win32、Windows NT、Windows 95的对比294

第十一章 Windows 95 Shell300

11.1 Shell游戏300

11.1.1 Shell扩展是如何工作的302

11.2 使用MFC创建Shell扩展DLL305

11.2.1 使用APPWIZARD创建_USRDLL305

11.2.2 初始化Shell扩展307

11.2.3 图标处理程序307

11.2.4 上下文菜单处理程序310

11.2.5 QueryContextMenu310

11.2.6 InvokeCommand313

11.2.7 IContextMenu316

11.2.8 ICOPYHOOK接口316

11.2.9 登录Shell扩展317

11.3 调试Shell扩展318

11.3.1 如何建立或升级一个Shell扩展319

11.4 小结319

11.5 Explorer319

第十二章 Windows和Win32的安全性320

12.1 用户识别320

12.2 安全性标识符321

12.3 访问令牌322

12.4 可施加安全保护的对象323

12.5 控制访问许可324

12.6 范例程序:SecureView329

12.7 启用优先权350

12.8 范例应用程序:ExitWindows352

12.9 安全性如何影响应用程序361

12.9.1 独立工作站361

12.10 模仿362

12.9.2 单域和多域网络362

12.11 安全性和屏幕保护程序363

12.12 NT的安全体系结构:总结363

第十三章 图形设备接口365

13.1 GDI的客户/服务器的本质概述365

13.1.1 对GDI API函数的修改367

13.1.2 被删除的GDI函数367

13.1.3 对GDI的改进367

13.1.4 对path的改进372

13.1.5 对位图的改进378

13.1.6 新的BITBLT函数380

13.1.7 照相铜版382

13.1.8 增强型元文件382

13.1.9 编辑元文件385

13.1.11 改进GDI绘图性能386

13.1.10 修改调色板386

13.1.12 GDI批量是特定于线程的388

13.2 小结389

第十四章 Win32s390

14.1 Win32s的工作方式390

14.1.1 WIN32S.EXE:创建任务数据库391

14.1.2 在16位和32位模块间转译的形式替换程序392

14.1.3 构成Win32s系统的文件392

14.2.2 用Win32替代Win32s395

14.2.3 与Win16应用程序共存395

14.2 Win32s何时适合于应用程序395

14.2.1 用Win16替代Win32s395

14.2.4 NotifyRegister和WIN32s397

14.2.5 用于Win32的NotifyRegister的另一个选择398

14.3 调试Win32s应用程序398

14.3.1 暂时不要丢开INT 21H402

14.4 小结402

1996《如何开发Windows 95 应用程序》由于是年代较久的资料都绝版了,几乎不可能购买到实物。如果大家为了学习确实需要,可向博主求助其电子版PDF文件(由(美)Kevin J.Goodman著;郭 勇等译 1996 北京:清华大学出版社 出版的版本) 。对合法合规的求助,我会当即受理并将下载地址发送给你。