|
读过这本书吗?
最近在读
读过
想读
还不熟悉
|
图书城书列:
加入到博客或社交网站:
|
|
我来评论这本书:
内容提要:
本书从实际应用入手,由浅入深、循序渐进地讲述Windows程序内部运行机制、MFC框架、文本、菜单、对话框、文件操作、网络编程、进程间通信、ActiveX控件、动态链接库、HOOK编程等多个主题。
不同于一般的讲述VC++使用的书籍,本书主要从程序内部运行的机制和MFC程序的组织脉络入手,使读者在学习VC++编程知识时,既能够知其然,又能知其所以然,从而帮助读者从根本上理解和掌握Windows的程序设计。另外,全书还贯穿作者多年来学习编程的一些经验,以及一些学习方法的建议,为读者进一步的学习提供指导。 本书内容丰富、实用性强,许多代码可以直接应用到工程项目中。 本书的配套光盘还免费提供近乎45小时的VC++教学视频,读者在学习的过程中可以将视频和书互为参考,配合学习,这样可以更快、更好地掌握VC++编程。 本书适合于VC++ 6.0的初学者和使用VC++从事开发的程序员,对于具有一定VC++编程经验的读者,也具有很好的参考价值。 喜欢读"这本书"的人也喜欢:
作者简介:
孙鑫,具有多年软件开发和教育培训经验,曾主讲过的课程包括C/C++、Visualc++、COM\DCOM+、SQL Server、Oracle、Java、J2EE等。2004年曾推出《Java无难事》和《VC++深入编程》教学视频,获得了强烈的反响。
编辑推荐:
IT培训专家孙鑫又一新作。
本书的配套光盘还免费提供近乎45小时的VC++教学视频。 本书主要从程序内部运行的机制和MFC程序的组织脉络入手,使读者在学习VC++编程知识时,既能够知其然,又能知其所以然,从而帮助读者从根本上理解和掌握Windows的程序设计。另外,全书还贯穿作者多年来学习编程的一些经验,以及一些学习方法的建议,为读者进一步的学习提供指导。 目录:
第1章 Windows程序内部运行机制 1
1.1 API与SDK 1 1.2 窗口与句柄 2 1.3 消息与消息队列 3 1.4 WinMain函数 4 1.4.1 WinMain函数的定义 5 1.4.2 窗口的创建 6 1.4.3 消息循环 13 1.4.4 编写窗口过程函数 15 1.5 动手写第一个Windows程序 19 1.6 消息循环的错误分析 23 1.7 变量的命名约定 25 1.8 小结 26 第2章 掌握C++ 27 2.1 从结构到类 27 2.1.1 结构体的定义 27 2.1.2 结构体与类 29 2.2 C++的特性 30 2.2.1 类与对象 34 2.2.2 构造函数 34 2.2.3 析构函数 37 2.2.4 函数的重载 37 2.2.5 this指针 39 2.2.6 类的继承 41 2.2.7 虚函数与多态性、纯虚函数 48 2.2.8 函数的覆盖和隐藏 52 2.2.9 引用 55 2.2.10 C++类的设计习惯及头文件重复包含问题的解决 57 2.2.11 VC++程序编译链接的原理与过程 61 第3章 MFC框架程序剖析 63 3.1 MFC AppWizard 63 3.2 基于MFC的程序框架剖析 66 3.2.1 MFC程序中的WinMain函数 67 3.2.2 MFC框架窗口 78 3.2.3 消息循环 85 3.2.4 窗口过程函数 86 3.2.5 文档/视类结构 87 3.2.6 帮助对话框类 88 3.3 窗口类、窗口类对象与窗口 88 3.3.1 三者之间关系 88 3.3.2 在窗口中显示按钮 92 3.4 本章小结 99 第4章 简单绘图 100 4.1 MFC消息映射机制 100 4.1.1 ClassWizard 101 4.1.2 消息映射机制 108 4.2 绘制线条 112 4.2.1 利用SDK全局函数实现画线功能 114 4.2.2 利用MFC的CDC类实现画线功能 115 4.2.3 利用MFC的CClientDC类实现画线功能 116 4.2.4 利用MFC的CWindowDC类实现画线功能 117 4.2.5 在桌面窗口中画线 118 4.2.6 绘制彩色线条 119 4.3 使用画刷绘图 121 4.3.1 简单画刷 121 4.3.2 位图画刷 122 4.3.3 透明画刷 124 4.4 绘制连续线条 130 4.5 绘制扇形效果的线条 132 第5章 文本编程 135 5.1 插入符 135 5.1.1 创建文本插入符 135 5.1.2 创建图形插入符 139 5.2 窗口重绘 140 5.2.1 OnDraw函数 141 5.2.2 添加字符串资源 142 5.3 路径 144 5.4 字符输入 149 5.4.1 设置字体 153 5.4.2 字幕变色功能的实现 156 5.5 本章小结 161 第6章 菜单 162 6.1 菜单命令响应函数 162 6.2 菜单命令的路由 165 6.2.1 程序类对菜单命令的响应顺序 165 6.2.2 Windows消息的分类 166 6.2.3 菜单命令的路由 166 6.3 基本菜单操作 169 6.3.1 标记菜单 169 6.3.2 默认菜单项 172 6.3.3 图形标记菜单 174 6.3.4 禁用菜单项 177 6.3.5 移除和装载菜单 181 6.3.6 MFC菜单命令更新机制 183 6.3.7 快捷菜单 187 6.4 动态菜单操作 193 6.4.1 添加菜单项目 194 6.4.2 插入菜单项目 195 6.4.3 删除菜单 198 6.4.4 动态添加的菜单项的命令响应 199 6.5 电话本示例程序 200 6.5.1 动态添加子菜单的实现 201 6.5.2 显示输入的字符 203 6.5.3 添加菜单项及其命令响应函数 206 6.5.4 框架类窗口截获菜单命令消息 211 6.6 本章小结 218 第7章 对话框(一) 219 7.1 对话框基本知识 219 7.1.1 常用控件介绍 219 7.1.2 对话框的种类 220 7.2 对话框的创建和显示 220 7.2.1 模态对话框的创建 224 7.2.2 非模态对话框的创建 225 7.3 动态创建按钮 228 7.4 控件的访问 232 7.4.1 控件的调整 232 7.4.2 静态文本控件 233 7.4.3 编辑框控件 235 7.5 对话框伸缩功能的实现 248 7.6 输入焦点的传递 254 7.7 默认按钮的进一步说明 262 7.8 本章小结 263 第8章 对话框(二) 264 8.1 “逃跑”按钮的实现 264 8.2 属性表单和向导的创建 271 8.2.1 创建属性页 276 8.2.2 创建属性表单 282 8.2.3 向导的创建 287 8.3 本章小结 307 附录 307 第9章 定制应用程序外观 311 9.1 修改应用程序窗口的外观 311 9.1.1 在窗口创建之前修改 311 9.1.2 在窗口创建之后修改 314 9.2 修改窗口的光标、图标和背景 316 9.2.1 在窗口创建之前修改 316 9.2.2 在窗口创建之后修改 320 9.3 模拟动画图标 322 9.3.1 加载图标资源 322 9.3.2 定时器的处理 324 9.4 工具栏编程 327 9.4.1 在工具栏上添加和删除按钮 328 9.4.2 创建工具栏 329 9.5 状态栏编程 339 9.6 进度栏编程 345 9.6.1 在窗口中创建进度栏 346 9.6.2 在状态栏的窗格中创建进度栏 347 9.7 在状态栏上显示鼠标当前位置 354 9.8 启动画面 357 9.9 本章小结 360 第10章 绘图控制 361 10.1 简单绘图 361 10.2 设置对话框 366 10.2.1 设置线宽 366 10.2.2 设置线型 370 10.3 颜色对话框 372 10.4 字体对话框 377 10.5 示例对话框 382 10.6 改变对话框和控件的背景及文本颜色 386 10.6.1 改变整个对话框及其上子控件的背景色 387 10.6.2 仅改变某个子控件的背景及文本颜色 388 10.6.3 改变控件上的文本字体 391 10.6.4 改变按钮控件的背景色及文本颜色 392 10.7 位图的显示 398 10.8 本章小结 403 第11章 图形的保存和重绘 404 11.1 坐标空间和转换 404 11.1.1 坐标空间 404 11.1.2 转换 405 11.1.3 逻辑坐标和设备坐标 409 11.2 图形的保存和重绘 411 11.2.1 集合类CPtrArray 413 11.2.2 OnPaint与OnDraw 417 11.3 窗口滚动功能的实现 419 11.3.1 CScrollView类 419 11.3.2 图形错位现象 421 11.4 元文件 426 11.4.1 元文件的使用 426 11.4.2 元文件的保存与打开 429 11.5 兼容设备描述表 431 11.6 本章小结 434 第12章 文件和注册表操作 435 12.1 const char*和char* const 435 12.1.1 const char* 435 12.1.2 char* const 436 12.2 C语言对文件操作的支持 437 12.2.1 文件的打开 437 12.2.2 文件的写入 438 12.2.3 文件的关闭 439 12.2.4 fflush函数 440 12.2.5 文件指针定位 440 12.2.6 文件的读取 442 12.2.7 二进制文件和文本文件 445 12.2.8 文本方式和二进制方式 448 12.3 C++对文件操作的支持 451 12.4 Win32 API对文件操作的支持 453 12.4.1 文件的创建和打开 453 12.4.2 文件的写入 456 12.4.3 文件的读取 458 12.5 MFC对文件操作的支持 459 12.5.1 文件的写入 460 12.5.2 文件的读取 461 12.5.3 CFileDialog类 461 12.6 Win.ini文件的访问 466 12.6.1 Win.ini文件的结构 466 12.6.2 Win.ini文件的写入 467 12.6.3 Win.ini文件的读取 469 12.7 注册表的编程 472 12.7.1 注册表API 472 12.7.2 注册表访问示例 476 12.8 本章小结 480 第13章 文档与串行化 481 13.1 使用CArchive类对文件进行读写操作 481 13.2 MFC框架程序提供的文件新建功能 484 13.2.1 IDR_MAINFRAME字符串资源 485 13.2.2 OnNewDocument函数的调用过程 489 13.3 文档串行化 496 13.3.1 文档类的Serialize函数 496 13.3.2 MFC框架对Serialize函数的调用过程 498 13.4 可串行化的类 506 13.4.1 实现类对串行化的支持 506 13.4.2 利用可串行化类的Serialize函数保存和加载对象 509 13.4.3 版本号 513 13.4.4 利用CObArray类对串行化的支持保存和加载数据 514 13.5 文档对象数据的销毁 518 13.6 本章小结 521 第14章 网络编程 523 14.1 计算机网络基本知识 523 14.1.1 IP地址 524 14.1.2 协议 524 14.1.3 网络的状况 524 14.1.4 网络异质性问题的解决 525 14.1.5 ISO/OSI七层参考模型 525 14.1.6 数据封装 528 14.1.7 TCP/IP模型 528 14.1.8 端口 529 14.1.9 套接字(socket)的引入 529 14.1.10 网络字节顺序 530 14.1.11 客户机/服务器模式 530 14.2 Windows Sockets的实现 530 14.2.1 套接字的类型 531 14.2.2 基于TCP(面向连接)的socket编程 531 14.2.3 基于UDP(面向无连接)的socket编程 532 14.3 相关函数 532 14.3.1 WSAStartup函数 532 14.3.2 socket函数 534 14.3.3 bind函数 534 14.3.4 inet_addr和inet_ntoa函数 535 14.3.5 listen函数 535 14.3.6 accept函数 536 14.3.7 send函数 536 14.3.8 recv函数 536 14.3.9 connect 537 14.3.10 recvfrom 537 14.3.11 sendto函数 538 14.3.12 htons和htonl函数 538 14.4 基于TCP的网络应用程序的编写 538 14.4.1 服务器端程序 538 14.4.2 客户端程序 543 14.5 基于UDP的网络应用程序的编写 546 14.5.1 服务器端程序 546 14.5.2 客户端程序 548 14.6 基于UDP的简单聊天程序 550 14.6.1 服务器端程序 550 14.6.2 客户端程序 553 14.7 本章小结 556 第15章 多线程 557 15.1 基本概念 557 15.1.1 进程 557 15.1.2 线程 560 15.2 线程创建函数 561 15.3 简单多线程示例 563 15.4 线程同步 566 15.4.1 火车站售票系统模拟程序 566 15.4.2 多线程程序容易出现的问题 568 15.4.3 利用互斥对象实现线程同步 570 15.5 保证应用程序只有一个实例运行 578 15.6 网络聊天室程序的实现 579 15.6.1 加载套接字库 580 15.6.2 创建并初始化套接字 581 15.6.3 实现接收端功能 582 15.6.4 实现发送端功能 586 15.7 本章小结 589 第16章 线程同步与异步套接字编程 590 16.1 事件对象 590 16.1.1 创建事件对象 590 16.1.2 设置事件对象状态 591 16.1.3 重置事件对象状态 591 16.1.4 利用事件对象实现线程同步 591 16.1.5 保证应用程序只有一个实例运行 597 16.2 关键代码段 598 16.2.1 相关的API函数 598 16.2.2 利用关键代码段实现线程同步 599 16.3 线程死锁 602 16.4 互斥对象、事件对象与关键代码段的比较 605 16.5 基于消息的异步套接字 606 16.5.1 相关函数说明 606 16.5.2 网络聊天室程序的实现 611 16.6 本章小结 621 第17章 进程间通信 622 17.1 剪贴板 622 17.1.1 数据发送 623 17.1.2 数据接收 627 17.2 匿名管道 629 17.2.1 基础知识 629 17.2.2 进程的创建 630 17.2.3 父进程的实现 635 17.2.4 子进程的实现 639 17.3 命名管道 643 17.3.1 基础知识 643 17.3.2 服务器端程序 646 17.3.3 客户端程序 651 17.4 邮槽 655 17.4.1 服务器端程序 656 17.4.2 客户端程序 657 17.5 本章小结 659 第18章 ActiveX控件 660 18.1 ActiveX控件 660 18.1.1 ActiveX控件的好处 662 18.1.2 MFC ActiveX 18.1.2 ControlWizard 662 18.1.3 ActiveX控件的测试 666 18.1.4 ActiveX控件的注册 668 18.1.5 时钟控件的实现 669 18.2 属性 671 18.2.1 标准属性 672 18.2.2 自定义属性 677 18.3 方法 682 18.4 事件 684 18.4.1 标准事件 684 18.4.2 自定义事件 686 18.5 属性的持久性 688 18.6 环境属性 691 18.7 ActiveX控件测试程序 693 18.8 本章小结 699 18.9 问题 699 第19章 动态链接库 701 19.1 动态链接库概述 701 19.1.1 静态库和动态库 701 19.1.2 使用动态链接库的好处 702 19.1.3 动态链接库的加载 703 19.2 Win32 DLL的创建和使用 703 19.2.1 Dumpbin命令 704 19.2.2 从DLL中导出函数 705 19.3 隐式链接方式加载DLL 707 19.3.1 利用extern声明外部函数 707 19.3.2 Depends工具 710 19.3.3 利用_declspec(dllimport)声明外部函数 71 前言:
VC++是在Windows平台下构建32位应用程序的强大而又复杂的开发工具,是目前世界上使用最多的开发工具之一。VC++的应用非常广泛,从桌面应用程序到服务器端软件,从系统软件到应用软件,从单机程序到分布式应用程序,从图形图像处理到游戏的开发,VC++无所不在。有一句关于VC++的话流传甚广,说“偷懒的人学VB,聪明的人学Delphi,真正的程序员学VC”,其一方面说明了VC应用的广泛,另一方面也说明了学习VC是有一定难度的。.
2004年,作者推出了一套讲述VC++ 6.0编程的教学视频,得到了广大学员的热烈反响,许多学员通过这套视频走上了VC++开发之路。有不少学员来信希望我能够将视频中的内容著书出版,让更多的..
书摘:
《VC++深入详解》
前言 VC++是在Windows平台下构建32位应用程序的强大而又复杂的开发工具,是目前世界上使用最多的开发工具之一。VC++的应用非常广泛,从桌面应用程序到服务器端软件,从系统软件到应用软件,从单机程序到分布式应用程序,从图形图像处理到游戏的开发,VC++无所不在。有一句关于VC++的话流传甚广,说“偷懒的人学VB,聪明的人学Delphi,真正的程序员学VC”,其一方面说明了VC应用的广泛,另一方面也说明了学习VC是有一定难度的。 …… |