孙鑫作品系列:VC++深入详解.pdf

孙鑫作品系列:VC++深入详解.pdf
 

书籍描述

编辑推荐
《孙鑫作品系列:VC++深入详解(修订版)》内容丰富、实用性强,许多代码可以直接应用到工程项目中。《孙鑫作品系列:VC++深入详解(修订版)》不同于一般的讲述VC++使用的书籍,《孙鑫作品系列:VC++深入详解(修订版)》主要从程序内部运行的机制和MFC程序的组织脉络入手,使读者在学习VC++编程知识时,既能够知其然,又能知其所以然,从而帮助读者从根本上理解和掌握Windows的程序设计。

作者简介
孙鑫,国内著名的IT技术和教育专家,2009中国教育杰出人物,程序员之家网站站长。具有十多年的软件开发和教育培训经验,精通多种程序语言和技术架构,曾主讲过的课程包括C/C++、VC++、COM/DCOM/COM+、SQL Server、Oracle、Java、J2EE、Struts/Struts 2、Hibernate、iBatis、Spring、数据库建模等。2004年曾推出《Java无难事>和《VC++深入编程》教学视频,获得了强烈反响,在网络上掀起了一股视频教学的风潮,数十万的学员通过这两套视频走上了软件开发的道路。从2006年开始,相继出版了畅销技术专著《Java Web开发详解》、《VC++深入详解》、《Struts 2深入详解》、《Servlet/JSP深入详解》、《XML、XMLSchema、XSLT 2.0和XQuery开发详解》、《HTML5、CSS和JavaScript开发》。目前专注于Android和iPhone开发。

目录
第1章 Windows程序内部运行机制
1.1 API与SDK
1.2 窗口与句柄
1.3 消息与消息队列
1.4 WinMain函数
1.4.1 WinMain函数的定义
1.4.2 窗口的创建
1.4.3 消息循环
1.4.4 编写窗口过程函数
1.5 动手写第一个Windows程序
1.6 消息循环的错误分析
1.7 变量的命名约定
1.8 本章小结
第2章 掌握C++
2.1 从结构到类
2.1.1 结构体的定义
2.1.2 结构体与类
2.2 C++的特性
2.2.1 类与对象
2.2.2 构造函数
2.2.3 析构函数
2.2.4 函数的重载
2.2.5 this指针
2.2.6 类的继承
2.2.7 虚函数与多态性、纯虚函数
2.2.8 函数的覆盖和隐藏
2.2.9 引用
2.2.10 C++类的设计习惯及头文件重复包含问题的解决
2.2.11 VC++程序编译链接的原理与过程
第3章 MFC框架程序剖析
3.1 MFC AppWizard
3.2 基于MFC的程序框架剖析
3.2.1 MFC程序中的WinMain函数
3.2.2 MFC框架窗口
3.2.3 消息循环
3.2.4 窗口过程函数
3.2.5 文档∕视类结构
3.2.6 帮助对话框类
3.3 窗口类、窗口类对象与窗口
3.3.1 三者之间关系
3.3.2 在窗口中显示按钮
3.4 本章小结
第4章 简单绘图
4.1 MFC消息映射机制
4.1.1 ClassWizard
4.1.2 消息映射机制
4.2 绘制线条
4.2.1 利用SDK全局函数实现画线功能
4.2.2 利用MFC的CDC类实现画线功能
4.2.3 利用MFC的CClientDC类实现画线功能
4.2.4 利用MFC的CWindowDC类实现画线功能
4.2.5 在桌面窗口中画线
4.2.6 绘制彩色线条
4.3 使用画刷绘图
4.3.1 简单画刷
4.3.2 位图画刷
4.3.3 透明画刷
4.4 绘制连续线条
4.5 绘制扇形效果的线条
第5章 文本编程
5.1 插入符
5.1.1 创建文本插入符
5.1.2 创建图形插入符
5.2 窗口重绘
5.2.1 OnDraw函数
5.2.2 添加字符串资源
5.3 路径
5.4 字符输入
5.4.1 设置字体
5.4.2 字幕变色功能的实现
5.5 本章小结
第6章 菜单
6.1 菜单命令响应函数
6.2 菜单命令的路由
6.2.1 程序类对菜单命令的响应顺序
6.2.2 Windows消息的分类
6.2.3 菜单命令的路由
6.3 基本菜单操作
6.3.1 标记菜单
6.3.2 默认菜单项
6.3.3 图形标记菜单
6.3.4 禁用菜单项
6.3.5 移除和装载菜单
6.3.6 MFC菜单命令更新机制
6.3.7 快捷菜单
6.4 动态菜单操作
6.4.1 添加菜单项目
6.4.2 插入菜单项目
6.4.3 删除菜单
6.4.4 动态添加的菜单项的命令响应
6.5 电话本示例程序
6.5.1 动态添加子菜单的实现
6.5.2 显示输入的字符
6.5.3 添加菜单项及其命令响应函数
6.5.4 框架类窗口截获菜单命令消息
6.6 本章小结
第7章 对话框(一)
7.1 对话框基本知识
7.1.1 常用控件介绍
7.1.2 对话框的种类
7.2 对话框的创建和显示
7.2.1 模态对话框的创建
7.2.2 非模态对话框的创建
7.3 动态创建按钮
7.4 控件的访问
7.4.1 控件的调整
7.4.2 静态文本控件
7.4.3 编辑框控件
7.5 对话框伸缩功能的实现
7.6 输入焦点的传递
7.7 默认按钮的进一步说明
7.8 本章小结
第8章 对话框(二)
8.1“逃跑”按钮的实现
8.2 属性表单和向导的创建
8.2.1 创建属性页
8.2.2 创建属性表单
8.2.3 向导的创建
8.3 本章小结
附录
第9章 定制应用程序外观
9.1 修改应用程序窗口的外观
9.1.1 在窗口创建之前修改
9.1.2 在窗口创建之后修改
9.2 修改窗口的光标、图标和背景
9.2.1 在窗口创建之前修改
9.2.2 在窗口创建之后修改
9.3 模拟动画图标
9.3.1 加载图标资源
9.3.2 定时器的处理
9.4 工具栏编程
9.4.1 在工具栏上添加和删除按钮
9.4.2 创建工具栏
9.5 状态栏编程
9.6 进度栏编程
9.6.1 在窗口中创建进度栏
9.6.2 在状态栏的窗格中创建进度栏
9.7 在状态栏上显示鼠标当前位置
9.8 启动画面
9.9 本章小结
第10章 绘图控制
10.1 简单绘图
10.2 设置对话框
10.2.1 设置线宽
10.2.2 设置线型
10.3 颜色对话框
10.4 字体对话框
10.5 示例对话框
10.6 改变对话框和控件的背景及文本颜色
10.6.1 改变整个对话框及其上子控件的背景色
10.6.2 仅改变某个子控件的背景及文本颜色
10.6.3 改变控件上的文本字体
10.6.4 改变按钮控件的背景色及文本颜色
10.7 位图的显示
10.8 本章小结
第11章 图形的保存和重绘
11.1 坐标空间和转换
11.1.1 坐标空间
11.1.2 转换
11.1.3 逻辑坐标和设备坐标
11.2 图形的保存和重绘
11.2.1 集合类CPtrArray
11.2.2 OnPaint与OnDraw
11.3 窗口滚动功能的实现
11.3.1 CScrollView类
11.3.2 图形错位现象
11.4 元文件
11.4.1 元文件的使用
11.4.2 元文件的保存与打开
11.5 兼容设备描述表
11.6 本章小结
第12章 文件和注册表操作
12.1 const char*和char*const
12.1.1 const char*
12.1.2 char*const
12.2 C语言对文件操作的支持
12.2.1 文件的打开
12.2.2 文件的写入
12.2.3 文件的关闭
12.2.4 fflush函数
12.2.5 文件指针定位
12.2.6 文件的读取
12.2.7 二进制文件和文本文件
12.2.8 文本方式和二进制方式
12.3 C++对文件操作的支持
12.4 Win32 API对文件操作的支持
12.4.1 文件的创建和打开
12.4.2 文件的写入
12.4.3 文件的读取
12.5 MFC对文件操作的支持
12.5.1 文件的写入
12.5.2 文件的读取
12.5.3 CFileDialog类
12.6 Win.ini文件的访问
12.6.1 Win.ini文件的结构
12.6.2 Win.ini文件的写入
12.6.3 Win.ini文件的读取
12.7 注册表的编程
12.7.1 注册表API
12.7.2 注册表访问示例
12.8 本章小结
第13章 文档与串行化
13.1 使用CArchive类对文件进行读写操作
13.2 MFC框架程序提供的文件新建功能
13.2.1 IDR_MAINFRAME字符串资源
13.2.2 OnNewDocument函数的调用过程
13.3 文档串行化
13.3.1 文档类的Serialize函数
13.3.2 MFC框架对Serialize函数的调用过程
13.4 可串行化的类
13.4.1 实现类对串行化的支持
13.4.2 利用可串行化类的Serialize函数保存和加载对象
13.4.3 版本号
13.4.4 利用CObArray类对串行化的支持保存和加载数据
13.5 文档对象数据的销毁
13.6 本章小结
第14章 网络编程
14.1 计算机网络基本知识
14.1.1 IP地址
14.1.2 协议
14.1.3 网络的状况
14.1.4 网络异质性问题的解决
14.1.5 ISO∕OSI七层参考模型
14.1.6 数据封装
14.1.7 TCP∕IP模型
14.1.8 端口
14.1.9 套接字(socket)的引入
14.1.10 网络字节顺序
14.1.11 客户机∕服务器模式
14.2 Windows Sockets的实现
14.2.1 套接字的类型
14.2.2 基于TCP(面向连接)的socket编程
14.2.3 基于UDP(面向无连接)的socket编程
14.3 相关函数
14.3.1 WSAStartup函数
14.3.2 socket函数
14.3.3 bind函数
14.3.4 inet_addr和inet_ntoa函数
14.3.5 listen函数
14.3.6 accept函数
14.3.7 send函数
14.3.8 recv函数
14.3.9 connect函数
14.3.10 recvfrom函数
14.3.11 sendto函数
14.3.12 htons和htonl函数
14.4 基于TCP的网络应用程序的编写
14.4.1 服务器端程序
14.4.2 客户端程序
14.5 基于UDP的网络应用程序的编写
14.5.1 服务器端程序
14.5.2 客户端程序
14.6 基于UDP的简单聊天程序
14.6.1 服务器端程序
14.6.2 客户端程序
14.7 本章小结
……
第15章 多线程
第16章 线程同步与异步套接字编程
第17章 进程间通信
第18章 ActiveX控件
第19章 动态链接库
第20章 HOOK和数据库访问

文摘
版权页:

孙鑫作品系列:VC++深入详解

插图:

孙鑫作品系列:VC++深入详解

第26行,调用TextOut函数在(0,0)的位置输出一个网址。当发生重绘时,窗口中的文字和图形都会被擦除。在擦除背景后,TextOut函数又一次执行,在窗口中再次绘制出。这个过程对用户来说是透明的,用户并不知道程序执行的过程,给用户的感觉就是你在响应WM_PAINT消息的代码中输出的文字或图形始终保持在窗口中。换句话说,如果我们想要让某个图形始终在窗口中显示,就应该将图形的绘制操作放到响应WM_PAINT消息的代码中。
那么系统为什么不直接保存窗口中的图形数据,而要由应用程序不断地进行重绘呢?这主要是因为在图形环境中涉及的数据量太大,为了节省内存的使用,提高效率,而采用了重绘的方式。
在响应WM_PAINT消息的代码中,要得到窗口的DC,必须调用BeginPaint函数。BeginPaint函数也只能在WM_PAINT消息的响应代码中使用,在其他地方,只能使用GetDC来得到DC的句柄。另外,BeginPaint函数得到的DC,必须用EndPaint函数去释放。
29~34行代码:当用户单击窗口上的关闭按钮时,系统将给应用程序发送一条WM_CLOSE消息。在这段消息响应代码中,我们首先弹出一个消息框,让用户确认是否结束。如果用户选择“否”,则什么也不做;如果用户选择“是”,则调用DestroyWindow函数销毁窗口,DestroyWindow函数在销毁窗口后会向窗口过程发送WM_DESTROY消息。注意,此时窗口虽然销毁了,但应用程序并没有退出。有不少初学者错误地在WM_DESTROY消息的响应代码中,提示用户是否退出,而此时窗口已经销毁了,即使用户选择不退出,也没有什么意义了。所以如果你要控制程序是否退出,应该在WM_CLOSE消息的响应代码中完成。

内容简介
《孙鑫作品系列:VC++深入详解(修订版)》从实际应用入手,由浅入深、循序渐进地讲述Windows程序内部的多个主题。全书还贯穿作者多年来学习编程的一些经验,以及一些学习方法的建议,为读者进一步的学习提供指导。《孙鑫作品系列:VC++深入详解(修订版)》的配套光盘还免费提供近45小时的VC++教学视频,读者在学习的过程中可以将视频和书互为参考,配合学习,这样可以更快、更好地掌握VC++编程。

购买书籍

当当网购书 京东购书 卓越购书

PDF电子书下载地址

相关书籍

搜索更多