《Visual C++编程实战宝典》PDF下载

  • 购买积分:22 如何计算积分?
  • 作  者:李琳娜编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2014
  • ISBN:9787302347934
  • 页数:811 页
图书介绍:本书由浅入深,全面、系统地介绍了Visual C++2010开发技术,书中提供了大量实例供读者实战演练。本书共29章,分为7篇。第1篇介绍Visual C++开发基础;第2篇介绍界面开发;第3篇介绍数据库开发;第4篇介绍网络编程;第5篇介绍系统编程;第6篇介绍多媒体开发;第7篇介绍项目开发实战。

第1篇Visual C++开发基础 2

第1章Visual Studio 2010集成开发环境 2

1.1 Visual Studio 2010及其开发环境 2

1.1.1 Visual Studio 2010的安装 2

1.1.2 Visual Studio 2010开发环境 3

1.1.3 Visual Studio 2010向导 4

1.2工作区视图 6

1.2.1解决方案视图 6

1.2.2类视图 6

1.2.3资源视图 6

1.3资源与资源编辑器 7

1.3.1资源的类型 7

1.3.2资源编辑器 8

1.4本章小结 8

1.5习题 8

第2章Visual Studio 2010基本应用程序的创建 9

2.1使用AppWizard生成项目 9

2.1.1解决方案与项目 9

2.1.2使用App Wizard创建项目 9

2.2 Win32控制台应用程序 11

2.2.1使用向导生成Win32控制台项目 11

2.2.2添加源文件 11

2.2.3编译、链接程序 12

2.2.4生成程序 13

2.2.5运行程序 13

2.3 MFC应用程序框架 15

2.3.1创建MFC应用程序 15

2.3.2认识文档/视图结构 16

2.4本章小结 17

2.5习题 17

第3章C/C++语言基础 18

3.1对标准C的扩展——C++ 18

3.2 C++语法元素 19

3.2.1最小的元素——符号 19

3.2.2注释规范 20

3.2.3标识符命名规范 21

3.2.4 C++预定义的关键字 21

3.2.5标点符号 22

3.2.6操作符 22

3.2.7声明与定义 24

3.3常量和变量 25

3.3.1定义常量 25

3.3.2常量成员函数 28

3.3.3定义变量 28

3.3.4代码的有效范围——作用域 29

3.4数据类型 31

3.4.1基本数据类型 31

3.4.2数据类型的转换方式 32

3.4.3数组 33

3.4.4结构体 34

3.4.5共用体 34

3.4.6匿名共用体 36

3.4.7枚举类型 38

3.4.8用typedef定义类型 39

3.4.9位域 39

3.5运算符和表达式 40

3.5.1算术运算符 41

3.5.2赋值运算符 41

3.5.3关系运算符 43

3.5.4逻辑运算符 44

3.5.5位运算符 45

3.5.6三目运算符 46

3.5.7增1和减1运算符 47

3.5.8逗号运算符 47

3.5.9 sizeof运算符 48

3.5.10 new和delete 49

3.5.11范围确定符 50

3.5.12类成员访问符 51

3.5.13成员指针操作符 51

3.6控制语句 52

3.6.1表达式语句、空语句和复合语句 52

3.6.2选择语句 53

3.6.3循环语句 56

3.6.4跳转语句 59

3.7函数 61

3.7.1函数的定义和调用 61

3.7.2带默认形参值的函数 62

3.7.3函数的递归调用 63

3.7.4内联函数 64

3.7.5函数的重载 65

3.8指针和引用 65

3.8.1指针和指针变量 65

3.8.2&和*运算符 66

3.8.3指针和数组 67

3.8.4指针和结构体 67

3.8.5函数的指针传递 68

3.8.6引用及函数的引用传递 68

3.9预处理 69

3.9.1宏定义 69

3.9.2文件包含 70

3.9.3条件编译 71

3.10文件操作 71

3.10.1打开文件 71

3.10.2从文件读取数据 72

3.10.3向文件写入数据 72

3.10.4关闭文件 73

3.10.5文件操作示例 73

3.11本章小结 74

3.12习题 75

第4章C++面向对象程序设计 76

4.1类和对象 76

4.1.1从结构到类 76

4.1.2定义类 76

4.1.3定义对象 78

4.1.4嵌套类 79

4.2类成员及其特性 79

4.2.1构造函数 79

4.2.2析构函数 81

4.2.3对象成员初始化 82

4.2.4常类型(const) 82

4.2.5使用this指针指向对象 83

4.2.6类的作用域和对象的生存期 84

4.2.7使用静态成员保存类的数据 84

4.2.8友元函数和友元类 85

4.3继承与派生 88

4.3.1如何使用继承方法 88

4.3.2派生类的构造函数和析构函数 89

4.3.3实现多重继承 91

4.3.4虚基类 92

4.4多态和虚函数 93

4.4.1使用虚函数实现派生类的通用功能 93

4.4.2纯虚函数和抽象基类 95

4.5重载运算符 96

4.5.1运算符重载语法 96

4.5.2可重载的运算符 97

4.5.3重载赋值运算符 98

4.6输入输出流库 99

4.6.1 C++的输入输出 99

4.6.2预定义输入/输出对象cout和cin 100

4.6.3标准错误处理对象cerr 100

4.6.4常用输入输出成员函数 100

4.6.5常见文件流类 101

4.6.6操作顺序文件 102

4.6.7操作随机文件 103

4.7 C++的模板机制 105

4.7.1为什么需要模板 105

4.7.2函数模板的使用 106

4.7.3类模板的使用 107

4.7.4模板与宏的对比 108

4.7.5模板应用示例 109

4.7.6 C++标准模板库STL简介 110

4.8 C++实例——设计一个电子时钟 111

4.9本章小结 112

4.10习题 112

第2篇 界面开发 116

第5章Windows编程与MFC基础 116

5.1 Windows编程 116

5.1.1 Windows应用程序编程接口API 116

5.1.2使用句柄标识窗口 117

5.1.3输入事件产生的消息 117

5.1.4 Windows句柄的数据类型 118

5.2 Windows程序执行流程 118

5.2.1入口函数WinMain() 119

5.2.2注册窗体类 119

5.2.3使用CreateWindow()创建窗口 120

5.2.4使用消息循环响应用户输入 120

5.2.5主窗体函数WinProc() 121

5.2.6 Windows编程实例——设计一个电子时钟 122

5.3 MFC基础 124

5.3.1什么是微软基础类库MFC 124

5.3.2 MFC类层次结构 125

5.3.3 MFC全局函数 126

5.4 MFC应用程序框架分析 127

5.4.1 MFC的入口函数WinMain() 127

5.4.2派生自CWinApp的应用程序对象 128

5.4.3初始化应用程序的InitInstance()函数 128

5.4.4框架程序的运行核心Run()函数 130

5.5 MFC的消息映射 130

5.5.1标准Windows消息 130

5.5.2触发菜单/快捷键产生的命令消息 131

5.5.3使用ON_MESSAGE宏自定义消息 132

5.5.4注册系统消息 132

5.6本章小结 133

5.7习题 133

第6章 菜单、工具栏和状态栏 134

6.1菜单 134

6.1.1菜单的种类及开发步骤 134

6.1.2创建和编辑菜单 134

6.1.3处理菜单命令消息 135

6.1.4处理菜单更新消息 136

6.1.5设置菜单项快捷键 138

6.1.6创建与使用弹出式菜单 138

6.1.7菜单类CMenu 140

6.2工具栏 141

6.2.1创建与编辑工具栏 141

6.2.2设置工具栏停靠和浮动 142

6.2.3设置工具提示 143

6.2.4 CToolBar介绍 144

6.3状态栏 144

6.3.1创建状态栏 144

6.3.2状态栏实例 145

6.3.3 CStatusBar介绍 147

6.4本章小结 148

6.5习题 148

第7章 使用Windows标准控件 149

7.1 Windows标准控件 149

7.1.1常用Windows控件 149

7.1.2使用对话框编辑器创建控件 150

7.1.3控件类的基类CWnd 151

7.1.4控件的消息及其处理 152

7.1.5创建控件对象 153

7.2按钮 154

7.2.1按钮简介 154

7.2.2按钮类CButton 155

7.2.3按钮的属性与消息 155

7.2.4设定和获取按钮状态 155

7.3静态控件与编辑控件 155

7.3.1创建与使用静态控件 156

7.3.2静态控件类CStatic 156

7.3.3创建编辑控件 157

7.3.4编辑控件类CEdit 157

7.3.5编辑控件的消息 158

7.3.6编辑控件的应用实例 158

7.4单选按钮和复选框 163

7.4.1单选按钮控件的创建 164

7.4.2单选按钮控件的消息 164

7.4.3复选框控件的创建 165

7.4.4复选框控件的消息 165

7.4.5单选按钮控件和复选框控件的实例 165

7.5列表框和组合框 166

7.5.1创建列表框 167

7.5.2列表框类CListBox 167

7.5.3列表框消息 168

7.5.4列表框实例 168

7.5.5创建组合框 169

7.5.6组合框类CComboBox 169

7.5.7组合框消息 170

7.5.8组合框实例 171

7.6微调控件、滑块控件和进度条控件 171

7.6.1微调控件的创建和使用 172

7.6.2创建和使用滑块控件 172

7.6.3创建和使用进度条控件 173

7.6.4编程实例 173

7.7列表视图控件和树形视图控件 174

7.7.1创建列表视图控件 175

7.7.2列表视图控件类CListCtrl 176

7.7.3列表视图控件的通知消息 176

7.7.4创建树形视图控件 176

7.7.5树形视图控件类CTreeCtrl 176

7.7.6树形视图控件的消息 177

7.7.7编程实例 178

7.8 ActiveX控件 178

7.8.1使用ActiveX控件 178

7.8.2 ActiveX控件的结构 178

7.8.3包装类 179

7.8.4获取ActiveX控件的帮助信息 179

7.8.5 Visual C++中的控件和组件库 181

7.8.6 MFC程序中ActiveX控件的使用 182

7.9本章小结 183

7.10习题 183

第8章MFC的一些常用类 184

8.1字符串类(CString) 184

8.1.1创建CString对象 184

8.1.2 CString类的成员函数 184

8.1.3 CString类的常用操作 186

8.1.4 CString的格式化与类型转换 188

8.1.5 CString使用实例 190

8.2集合类 191

8.2.1数组类 191

8.2.2数组类的使用实例 192

8.2.3链表类 194

8.2.4链表类的使用实例 195

8.3日期、时间类 197

8.3.1 CTime类 197

8.3.2格式化CTime对象 198

8.3.3 CTimeSpan类 199

8.3.4制作一个计时器 199

8.4 MFC文件操作类——CFile 200

8.4.1构造文件对象并打开文件 200

8.4.2读写文件 202

8.4.3定位文件 202

8.4.4文件管理操作 203

8.4.5文件操作实例 204

8.5 MFC异常类 205

8.5.1 MFC异常类简介 205

8.5.2文件异常类CFileException 206

8.5.3异常的捕获 206

8.6本章小结 208

8.7习题 208

第9章 文档/视图结构应用程序 209

9.1文档/视图结构分析 209

9.1.1框架中的主要类 209

9.1.2文档类、视图类核心函数 211

9.1.3新建、保存和打开的实现 214

9.1.4多文档应用程序框架 214

9.2开发文档/视图结构应用程序 215

9.2.1目标 215

9.2.2创建基本程序框架 216

9.2.3创建文档数据 216

9.2.4绘图操作 217

9.2.5文档序列化CArchive 218

9.2.6让文档/视图结构支持滚动条 219

9.3对话框分割与多视图应用 222

9.3.1对话框分割基础知识 222

9.3.2动态分割对话框的实现 222

9.3.3多视图的实现 223

9.4文档/视图应用程序实例 224

9.5本章小结 226

9.6习题 226

第10章 对话框的应用 228

10.1对话框概述 228

10.1.1对话框工作方式 228

10.1.2对话框的种类 229

10.1.3创建与编辑对话框模板 229

10.2对话框与程序连接 230

10.2.1创建对话框类 230

10.2.2为对话框类添加成员变量 231

10.2.3 DDX和DDV机制 233

10.2.4处理对话框控件通知消息 236

10.3创建与显示对话框 238

10.3.1创建模态对话框 238

10.3.2创建非模态对话框 239

10.3.3修改对话框背景颜色 239

10.3.4关闭对话框 240

10.4属性表对话框 241

10.4.1属性表对话框的运行机制 241

10.4.2属性表对话框的创建 241

10.5消息对话框与公用对话框 242

10.5.1消息对话框实例 243

10.5.2颜色对话框实例 244

10.5.3文件对话框实例 245

10.5.4字体对话框实例 246

10.5.5查找、替换对话框实例 247

10.5.6打印对话框实例 247

10.6本章小结 248

10.7习题 249

第3篇 数据库开发 252

第11章 数据库开发概述 252

11.1数据库简介 252

11.1.1数据库发展史概述 252

11.1.2数据库常见概念 253

11.1.3数据库的作用 253

11.1.4数据库管理系统(DBMS) 254

11.1.5数据库常见4种数据模型 254

11.1.6数据库的体系结构 256

11.1.7关系数据库 256

11.1.8数据库的开发过程 257

11.2规范化理论 258

11.2.1为什么需要规范化 258

11.2.2数据依赖 258

11.2.3范式介绍 260

11.3 E-R模型 262

11.3.1 E-R模型元素 263

11.3.2 E-R设计 264

11.4结构化查询语言SQL 265

11.4.1 SQL语言概述 265

11.4.2 SQL数据定义语句DDL 266

11.4.3 SQL数据操纵语句DML 268

11.4.4 SQL数据控制语句DCL 269

11.4.5操作视图 270

11.5 Visual C++数据库接口 271

11.5.1面向对象技术 271

11.5.2 Windows平台下的数据访问接口 271

11.5.3 Visual C++数据访问接口 273

11.5.4用Visual C++访问数据库的优点 274

11.6本章小结 274

11.7习题 275

第12章Visual C++中SQL Server访问技术 276

12.1 SQL Server 2008简介 276

12.1.1 SQL Server 2008介绍 276

12.1.2 SQL Server 2008的工具 277

12.1.3 SQL Server 2008配置管理器 277

12.1.4 SQL Server Management Studio 278

12.2创建SQL Server 2008对象 279

12.2.1创建用户数据库 280

12.2.2创建和管理表 281

12.2.3创建和管理视图 282

12.2.4创建和管理存储过程 283

12.3 ADO访问技术 284

12.3.1 ADO模型 284

12.3.2 ADO数据库访问步骤分析 286

12.4使用ADO访问数据库实例 286

12.4.1 ADO连接SQL Server数据库 287

12.4.2 ADO读取数据库表记录 288

12.4.3 ADO写入数据库表记录 290

12.4.4 ADO删除数据库表记录 291

12.5本章小结 292

12.6习题 292

第13章Visual C++中ODBC访问技术 293

13.1 ODBC API 293

13.1.1 ODBC体系结构 293

13.1.2 ODBC数据类型 294

13.1.3 ODBC句柄与返回值 295

13.1.4ODBC驱动和管理器 296

13.1.5配置ODBC数据源 297

13.2用ODBC API操作数据库实例 299

13.2.1操作数据库的一般步骤 299

13.2.2连接数据库 300

13.2.3读取数据库表记录 301

13.2.4添加、删除记录 302

13.2.5断开数据库连接 302

13.2.6 ODBC API封装类实例 303

13.3用MFC ODBC类操作数据库 309

13.3.1连接数据库——CDatabase类 309

13.3.2选择和操作记录——CRecordset类 310

13.3.3在窗体中显示和操作数据——CRecordView类 312

13.3.4异常处理——CDBException类 312

13.3.5断开数据源连接 312

13.3.6 MFC ODBC操作数据库实例 313

13.4自动注册DSN 317

13.5本章小结 318

13.6习题 318

第14章Visual C++中OLE DB访问技术 319

14.1 OLE DB简介 319

14.1.1什么是OLE DB 319

14.12 OLE DB和ODBC之间的关系 320

14.2 Visual C++中的OLE DB类 320

14.2.1数据库连接类CDataSource 320

14.2.2数据库访问会话类Csession 321

14.2.3记录集类CrowSet 321

14.2.4 数据表CTable 322

14.3 Visual C++的OLE DB应用实例 323

14.3.1创建应用程序 323

14.3.2显示数据库表 324

14.3.3显示表定义 326

14.4本章小结 329

14.5习题 330

第15章Visual C++中MySQL访问技术 331

15.1 MySQL C API 331

15.1.1 MySQL C API的数据类型 331

15.1.2 MySQL C API 函数 333

15.1.3应用程序实例 335

15.1.4 CDatabase类的实现 337

15.1.5应用CDatabase类 339

15.2本章小结 340

15.3习题 340

第4篇 网络编程 342

第16章Windows套接字编程 342

16.1常见概念 342

16.1.1 Windows Sockets规范 342

16.1.2套接字及其分类 342

16.1.3客户端/服务器(C/S)模型 343

16.1.4网络字节顺序 344

16.2套接字库函数 346

16.2.1套接字函数 346

16.2.2数据库函数 347

16.2.3 Windows扩展函数 349

16.3使用WinSock API 350

16.3.1基本Socket系统调用 350

16.3.2 Windows Sockets编程机理 352

16.3.3面向连接的套接字编程 353

16.3.4无连接套接字编程 354

16.3.5原始套接字编程 355

16.4 MPC对WinSock API的封装 356

16.4.1 CAsyncSocket类 356

16.4.2使用CAsyncSocket类 356

16.4.3 CSocket类 357

16.4.4使用CSocket类 357

16.5MFC Socket实例 359

16.6本章小结 363

16.7习题 363

第17章 邮槽与管道 364

17.1邮槽 364

17.1.1实施细节 364

17.1.2邮槽服务器 365

17.1.3邮槽客户端 366

17.1.4其他功能函数 366

17.1.5邮槽应用示例 366

17.2匿名管道 368

17.2.1匿名管道的实施细节 368

17.2.2匿名管道应用示例 369

17.3命名管道 370

17.3.1命名管道技术概述 371

17.3.2命名规范及通信模式 371

17.3.3使用命名管道 372

17.3.4其他功能函数 373

17.3.5命名管道实例 374

17.4本章小结 377

17.5习题 377

第18章 通信端口编程 378

18.1串行端口通信编程 378

18.1.1 Windows环境下的串口编程 378

18.1.2设定串口参数 379

18.1.3数据流控制参数 381

18.1.4申请串口资源 383

18.1.5同步I/O读写数据 385

18.1.6使用事件驱动机制 386

18.1.7异步I/O读写数据 387

18.1.8 MS Comm串行通信控件 388

18.2通信端口编程实例 391

18.2.1串口线程初始化 391

18.2.2串口接收线程 392

18.2.3打开和关闭串口 393

18.2.4向串口发送数据 395

18.2.5界面处理 395

18.3本章小结 398

18.4习题 398

第19章Internet编程 399

19.1 WinInet编程 399

19.1.1 WinInet API概述 399

19.1.2 WinInet常用类概览 400

19.1.3超文本传输协议HTTP编程 403

19.1.4文件传输协议FTP编程 405

19.1.5网际Gopher协议编程 407

19.2 ISAPI编程 408

19.2.1 ISAPI概述 408

19.2.2 ISAPI服务器扩展程序 409

19.2.3使用应用向导开发ISAPI服务器扩展程序 411

19.2.4调试ISA 412

19.2.5 ISAPI过滤程序 413

19.3 MAPI编程 415

19.3.1 MAPI体系结构概述 415

19.3.2 MAPI应用程序接口 416

19.3.3使用MAPI编写支持电子邮件的程序 417

19.4本章小结 419

19.5习题 419

第5篇 系统编程 422

第20章 系统相关功能开发 422

20.1获取磁盘信息 422

20.1.1获取驱动器卷标 422

20.1.2获取磁盘序列号 423

20.1.3检测软驱是否有软盘 424

20.1.4判断是否插入存储器 425

20.1.5判断光驱是否有光盘 427

20.1.6判断驱动器类型 428

20.1.7获取磁盘空间信息 429

20.2操作磁盘 430

20.2.1格式化磁盘 431

20.2.2关闭磁盘共享 432

20.2.3设置磁盘卷标 434

20.2.4磁盘碎片整理 434

20.2.5从FAT32转换为NTFS 435

20.2.6隐藏磁盘分区 436

20.2.7显示被隐藏的磁盘分区 437

20.2.8如何更改分区号 438

20.2.9如何监视硬盘 439

20.3系统控制与调用 440

20.3.1调用外部程序 441

20.3.2调用创建快捷方式向导 442

20.3.3访问启动控制面板中的各项 442

20.3.4控制光驱的弹开与关闭 444

20.3.5关闭、重启、注销和锁定计算机 445

20.3.6关闭和打开显示器 446

20.3.7打开和关闭屏幕保护 447

20.3.8关闭当前输入法 447

20.3.9让程序发出提示音 447

20.3.10列举系统中的可执行文件 448

20.4应用程序操作 450

20.4.1禁止程序重复运行 450

20.4.2如何确定应用程序没有响应 451

20.4.3检索任务管理器中的任务列表 452

20.4.4判断某个程序是否运行 453

20.4.5怎样在程序中执行DOS命令 454

20.4.6修改其他进程中对话框的标题 455

20.4.7如何设计换肤程序 455

20.4.8 PE档案格式分析 457

20.4.9修改应用程序图标 458

20.4.10列举应用程序使用的dll文件 459

20.4.11调用具有命令行参数的应用程序 460

20.4.12在程序中调用一个子进程直到结束 461

20.5系统工具 462

20.5.1为程序添加快捷方式 462

20.5.2显示系统正在运行的程序 463

20.5.3如何获得毫秒级时间 465

20.5.4注册和卸载组件 465

20.5.5清空回收站 467

20.5.6如何在程序中显示文件属性对话框 468

20.6桌面相关 469

20.6.1获取桌面对话框 469

20.6.2获取任务栏对话框句柄 470

20.6.3获取桌面列表视图句柄 471

20.6.4获取任务栏属性 471

20.6.5隐藏和显示桌面图标 472

20.6.6隐藏和显示Windows任务栏 473

20.6.7隐藏和显示“开始”按钮 474

20.6.8隐藏和显示任务栏时钟 475

20.6.9判断屏幕保护程序是否在运行 476

20.6.10判断系统是否使用大字体 477

20.6.11改变桌面背景颜色 478

20.7系统信息 479

20.7.1获取CPU ID值 479

20.7.2获取CPU时钟频率 480

20.7.3获得Windows和System的路径 481

20.7.4获取特殊文件夹路径 482

20.7.5检测系统启动模式 484

20.7.6判断操作系统类型 485

20.7.7获取当前系统的运行时间 486

20.7.8如何获取Windows 7系统启动时间 487

20.7.9获取处理器信息 487

20.7.10检测是否安装声卡 489

20.7.11获取当前用户名 490

20.7.12获取系统环境变量 490

20.7.13修改计算机名称 491

20.7.14获取当前屏幕颜色质量 492

20.7.15获得当前屏幕的分辨率 492

20.8消息 493

20.8.1如何自定义消息 493

20.8.2如何向Windows注册消息 494

20.8.3 PostMessage()函数和SendMessage()函数的区别 496

20.8.4利用WM COPYDATA消息实现进程间数据传递 496

20.9剪贴板 498

20.9.1列举剪贴板中数据类型 498

20.9.2监视剪贴板复制过的内容 499

20.9.3通过剪贴板传递全局数据 501

20.10鼠标键盘 502

20.10.1交换鼠标左右键 502

20.10.2设置鼠标双击的时间间隔 503

20.10.3获得鼠标键数 504

20.10.4获取鼠标下窗体句柄 505

20.10.5模拟鼠标单击按钮 505

20.10.6在程序中添加快捷键 507

20.10.7在对话框中使用加速键 507

20.10.8处理鼠标滚轮消息 509

20.10.9获取键盘按键 510

20.10.10获取键盘类型及功能号 511

20.10.11控制键盘指示灯 512

20.11本章小结 514

20.12习题 514

第21章 注册表、INI和XML文件 515

21.1读写注册表的API函数 515

21.1.1注册表的概念 515

21.1.2创建带安全属性的注册表项 516

21.1.3创建注册表项 517

21.1.4打开注册表项 518

21.1.5判断注册表项是否存在 519

21.1.6删除注册表项 519

21.1.7打开注册表根项 520

21.1.8指定注册表项的默认值 521

21.1.9设置注册表键值 522

21.1.10快速设置注册表键值字符串 523

21.2注册表应用 524

21.2.1保存注册表项 524

21.2.2开机自动运行 526

21.2.3隐藏和显示我的电脑 526

21.2.4隐藏和显示回收站 527

21.2.5隐藏显示所有驱动器 528

21.2.6禁止“查找”菜单 529

21.2.7禁止“文档”菜单 529

21.2.8在退出Windows时清除“文档”中的记录 530

21.2.9禁用注册表编辑器 531

21.2.10禁止使用inf文件 532

21.2.11禁止使用reg文件 532

21.2.12显示隐藏文件或文件夹 533

21.3读写注册表的ATL类 534

21.3.1使用CRegKey类写入默认键值 534

21.3.2使用CRegKey类写入新键值 535

21.3.3使用CRegKey类查询键值 536

21.4注册表的查询与枚举 537

21.4.1查询注册表键值 537

21.4.2快速查询注册表键值 538

21.4.3枚举注册表键值 539

21.4.4列举开机启动程序 539

21.4.5枚举注册表项 540

21.4.6枚举安装程序 541

21.5 INI文件的读写函数 542

21.5.1向指定键写入字符串 542

21.5.2获取指定键下的整型数据 544

21.5.3获取指定键下的字符串数据 544

21.5.4向INI文件写入结构数据 545

21.5.5获取INI文件结构数据 546

21.5.6向指定节写入数据 547

21.5.7获取所有节名 548

21.5.8获取指定节的键名及数据 549

21.6 XML文件操作 551

21.6.1 XML文件简介 551

21.6.2 XML文件的优势 551

21.6.3读取XML文件内容 552

21.6.4向XML文件中写入内容 553

21.7本章小结 554

21.8习题 554

第22章 动态链接库编程 556

22.1基本概念 556

22.1.1动态链接库的概念 556

22.1.2动态链接库的优点 557

22.1.3 DLL的种类 558

22.1.4 DLL文件的组成 559

22.2 DLL的创建与使用实例 559

22.2.1创建Win32 DLL 560

22.2.2 DLL的导出 561

22.2.3应用程序链接DLL 562

22.2.4动态链接库函数 563

22.2.5从动态库中获取位图资源 565

22.2.6枚举模块中的所有图标 567

22.2.7使用模块对话框资源 569

22.2.8替换应用程序的对话框资源 569

22.2.9屏蔽键盘Power键 571

22.2.10屏蔽键盘Win键 573

22.2.11禁止使用<Alt+F4>组合键关闭窗体 573

22.3 MFC常规DLL的创建与使用实例 573

22.3.1基本概念 574

22.3.2创建MFC常规DLL 574

22.3.3 MFC常规DLL的创建实例 575

22.3.4调用MFC常规DLL 576

22.4 MFC扩展DLL的创建与使用实例 577

22.4.1创建MFC扩展DLL 577

22.4.2 MFC扩展DLL的创建实例 578

22.4.3调用MFC扩展DLL 578

22.5 DLL的查看与调试 579

22.5.1使用Depends工具查看DLL接口 579

22.5.2调试DLL 580

22.6本章小结 580

22.7习题 580

第23章 多线程编程 582

23.1引入多线程 582

23.1.1单线程的不足 582

23.1.2解决的问题 583

23.2进程和线程 583

23.2.1 Spy++ 583

23.2.2多线程Win32 API 585

23.2.3 MFC对多线程编程的支持 586

23.3开发多线程程序 586

23.3.1使用Win32 API函数开发 586

23.3.2 MFC用户界面线程的开发 587

23.3.3 MFC工作者线程的开发 588

23.3.4挂起线程 590

23.3.5终止线程 591

23.3.6使线程睡眠 592

23.3.7启动和关闭记事本 593

23.3.8调用记事本程序并挂起 595

23.3.9监测记事本程序关闭 595

23.4线程间的通信 596

23.4.1使用全局变量 596

23.4.2使用自定义的消息 597

23.5线程的同步 598

23.5.1等待函数 599

23.5.2利用事件对象 600

23.5.3使用事件对象实例 601

23.5.4利用临界区 602

23.5.5利用临界区实例 603

23.5.6利用信号量 604

23.5.7利用信号量实例 605

23.5.8利用互斥对象 607

23.5.9利用互斥对象实例 607

23.6多线程程序实例 609

23.7本章小结 611

23.8习题 611

第6篇 多媒体开发 614

第24章 文本字体技术 614

24.1字体对象 614

24.1.1字体要素 614

24.1.2创建字体对象 615

24.1.3获取字体信息 616

24.1.4字体对象使用实例 617

24.2字体效果 617

24.2.1如何设计空心字 617

24.2.2渐变颜色的字体 618

24.2.3获取路径信息点 619

24.2.4文字跟随鼠标 620

24.2.5如何实现旋转字体 620

24.2.6文字水平滚动 621

24.2.7字体垂直滚动 622

24.2.8设计3D立体文字 623

24.3本章小结 624

24.4习题 624

第25章 图形与图像编程(教学视频:109分钟) 625

25.1位图和区域对象 625

25.1.1设备相关位图(DDB) 625

25.1.2 CBitmap应用实例 626

25.1.3设备无关位图(DIB) 627

25.1.4区域对象(CRgn) 627

25.1.5 CRgn应用实例 628

25.2画笔和画刷 629

25.2.1使用画笔对象 629

25.2.2使用画笔绘图实例 630

25.2.3使用画刷对象 631

25.2.4使用画刷绘图实例 631

25.3图像基础技术 632

25.3.1如何使用GDI+ 632

25.3.2如何创建含有位图的画刷 633

25.3.3保存屏幕抓图文件 634

25.3.4利用内存画布防止绘图时出现屏幕闪烁 635

25.3.5创建几何画笔 636

25.3.6绘制网格 637

25.3.7创建不同的画刷 638

25.3.8填充矩形区域 639

25.3.9模拟时钟 640

25.3.10颜色渐变算法 642

25.3.11如何绘制渐变颜色 643

25.3.12图元文件的保存与打开 644

25.3.13图像居中显示 645

25.3.14图片融合效果 646

25.3.15保存设备上下文 647

25.4特殊曲线 648

25.4.1绘制蜗牛线 648

25.4.2绘制贝塞尔曲线 649

25.4.3绘制正弦曲线 650

25.5图像特效 651

25.5.1图像锐化处理 652

25.5.2图像柔化处理 653

25.5.3图像反色处理 654

25.5.4图像灰度处理 655

25.5.5图像浮雕效果 657

25.5.6图像翻转 658

25.5.7图像缩放 659

25.58图片剪切 659

25.5.9图片马赛克效果 660

25.5.10垂直百叶窗显示图片 662

25.5.11水平百叶窗显示图片 663

25.6图像控制 664

25.6.1在图片上绘制线条 664

25.6.2在图片上绘制网格 665

25.6.3打开高颜色质量图像 665

25.6.4创建最顶层窗体 666

25.6.5在视图中拖动图片 667

25.6.6屏幕截图 669

25.6.7保存屏幕图像到剪贴板 670

25.6.8获取图像RGB值 670

25.6.9渐隐渐显的图像 671

25.6.10保留椭圆中图片内容 673

25.6.11去除椭圆下的图片内容 674

25.7本章小结 676

25.8习题 676

第26章 声音与动画编程 677

26.1多媒体声音控制 677

26.1.1录制与播放声音 677

26.1.2可以选择曲目的CD播放器 680

26.1.3控制音量 681

26.1.4利用PC喇叭播放声音 682

26.1.5定时播放WAV文件 682

26.1.6播放MIDI文件 683

26.1.7开发具有记忆功能的MP3播放器 683

26.2多媒体应用 684

26.2.1滚动字体作屏保 684

26.2.2相册作屏保 686

26.2.3设计画图程序 687

26.3动画效果 688

26.3.1标题栏动画图标 689

26.3.2实现图标动画 689

26.3.3系统托盘动态图标 690

26.4多媒体文件的播放 691

26.4.1播放GIF动画 692

26.4.2播放Flash动画 693

26.4.3播放VCD 693

26.4.4显示JPEG图像 694

26.5本章小结 696

26.6习题 696

第27章DirectX图形开发 697

27.1 DirectX SDK 697

27.1.1 DirectX SDK的安装 697

27.1.2 Visual Studio 2010中的相应设置 698

27.2 DirectX 9.0介绍 701

27.2.1 DirectX组件介绍 701

27.2.2使用COM 701

27.3 DirectX图形开发基本概念 702

27.3.1世界坐标系 702

27.3.2摄影坐标系 702

27.3.3剪裁和透视投影 703

27.3.4视口变换和像素的光栅显示 703

27.3.5显示卡的3D渲染管道线 704

27.4基本三角形面的绘制 705

27.4.1 DirectX Graphics基本应用架构 705

27.4.2创建IDirect3D9接口对象 706

27.4.3创建Direct3D设备 706

27.4.4创建顶点缓冲区 707

27.4.5启动管道流水线进行渲染 708

27.4.6实例——绘制一个基本的三角形面 709

27.5基本立体面的绘制 712

27.5.1 3D原始类型 712

27.5.2背面剔除和顶点顺序 715

27.5.3顶点索引缓冲区 716

27.5.4在世界坐标系中放置物体 716

27.5.5架设摄影机进行取景和投影 717

27.5.6屏幕视口的设置 717

27.5.7实例——绘制一个基本的立体面 717

27.6材质和光照处理 721

27.6.1颜色与光照 721

27.6.2光源设置 723

27.6.3点光源 723

27.6.4聚焦光源 724

27.6.5方向光源 724

27.6.6材质设置 724

27.6.7顶点的法向量 725

27.7纹理贴图 726

27.7.1顶点的纹理坐标 726

27.7.2创建纹理对象 727

27.7.3纹理过滤技术 729

27.7.4纹理地址模式 729

27.8 Alpha颜色混合 730

27.8.1颜色混合原理 730

27.8.2 Alpha颜色混合例子 731

27.8.3利用ID3DXSprite实现颜色透明 732

27.8.4利用Alpha测试实现颜色透明 733

27.9 XFile网格的应用 734

27.9.1 .x文件的基本格式 734

27.9.2 .x文件的数据装入 737

27.9.3 Mesh数据的处理 738

27.9.4 Mesh数据的优化 738

27.10本章小结 739

27.11习题 739

第7篇 项目开发实战 742

第28章 网络音频播放系统 742

28.1系统分析与设计 742

28.1.1功能描述 742

28.1.2功能模块设计 742

28.2界面实现 743

28.2.1界面设计 743

28.2.2界面初始化 744

28.2.3界面代码 745

28.3核心实现 751

28.3.1线程同步类 751

28.3.2音频驱动函数 752

28.3.3 CAudioPlay类的声明 755

28.3.4音频播放器初始化 757

28.3.5音频采样处理 758

28.3.6音频输出实现 762

28.3.7打开音频文件 763

28.3.8停止音频播放 766

28.3.9暂停音频和继续音频 767

28.3.10获取音频属性 767

28.4程序运行效果 770

28.5本章小结 770

第29章GPS定位系统 771

29.1 GPS监控系统概况 771

29.1.1 GPS监控系统概述 771

29.1.2 GPS监控系统的系统架构 771

29.2 GPS数据通信协议NEMA0183协议 774

29.2.1配置参数及协议格式 774

29.2.2 NEMA0183标准语句 774

29.2.3 GARMIN定义的语句 777

29.2.4NEMA0183协议的TEXT文本格式 778

29.3串口接收GPS信息程序设计 779

29.3.1实例背景 780

29.3.2GPS模块与串口的通信协议 780

29.3.3程序功能 780

29.3.4界面设计 780

29.3.5结构声明 782

29.3.6初始化操作 786

29.3.7GPS数据接收的实现方法 788

29.3.8 GPS数据解析的实现方法 791

29.3.9多线程串口工作方式 799

29.3.10发送命令 806

29.3.11结束清理 808

29.3.12地图支持 808

29.3.13程序测试截图 810

29.4本章小结 811