由浅入深学Visual C++

出版时间:2012-8  出版社:电子工业出版社  作者:胡超,闫玉宝 编著  页数:530  字数:884000  
Tag标签:无  

前言

  Visual C++ 6.0(以下简称VC 6.0)是Microsoft Visual Studio开发组件中最为强大的编程工具,也是目前Windows平台下最流行的开发工具之一,尤其适合开发有关系统操作、图形图像处理、音/视频处理及通信组件等技术含量较高的程序。它不仅可以开发桌面程序,还支持开发网络程序,同时可以通过COM技术,提供对多种底层技术的支持。因此,现在许多工程仍然广泛使用Visual C++进行开发。  本书结合笔者多年的Visual C++开发经验和心得体会,注重基础,突出应用,强化能力,以实例贯穿全文,以编程应用为驱动。全书分为5篇共20章,循序渐进地从基本概念入门、编程实践提高到实例项目开发来讲解Visual C++程序设计思想和方法,既强调基础知识的重要性,又特别注重其实践性与实用性。学完本书后,读者可以具备独立进行项目开发的能力。  本书内容体系与学习梯度  本书内容编写体例  本书特色  1.多媒体语音教学视频,学习效果好  作者专门录制了大量的配套多媒体语音教学视频,以便读者更加轻松、直观地学习本书内容,提高学习效率。这些视频与本书源代码一起收录于配书光盘中。  2.内容翔实、系统、深入  本书介绍了Visual C++开发的基础知识、界面开发、Win32程序开发、数据库开发、网络及通信程序开发,以及多线程和DLL技术等内容,最后还详细介绍了一个真实项目案例的开发全过程。  3.讲解由浅入深、循序渐进,适合各个层次的读者阅读  本书从Visual C++的基础开始讲解,逐步深入到Visual C++的高级开发技术及应用,内容梯度从易到难,讲解由浅入深、循序渐进,各个层次的读者阅读均有所获。  4.贯穿大量的开发实例,提升开发能力  本书在讲解知识点时贯穿了大量短小精悍的典型实例,各章后面也配置了任务明确的练习,以便读者更好地理解各种概念和开发技术,体验实际编程,迅速提升开发能力。  5.提供实例程序光盘,方便学习  本书把每章例子的程序文件,按章节添加到本书附带的光盘中。在学习过程中,读者可以通过模仿并修改光盘中的代码,快速有效地掌握各章介绍的知识点。  本书内容及体系结构  第1篇  VC 6.0基础篇(第1~2章)  本篇主要内容包括:VC 6.0的安装及开发环境、VC 6.0的程序结构及界面工具等。通过本篇的学习,读者可以掌握VC 6.0开发环境,熟练使用VC 6.0应用程序向导和类向导。  第2篇  C/C++语言和C++库(第3~7章)  本篇主要内容包括:C/C++语言、输入/输出流库、标准C++库和STL标准模板库、ATL模板库及MFC类库等。通过本篇的学习,读者可以掌握C++语法、C++库和MFC类库的应用。  第3篇  VC 6.0界面篇(第8~14章)  本篇主要内容包括:Windows控件、菜单栏、工具栏和状态栏、对话框程序开发、文档/视图程序开发、序列化的实现、打印与帮助、ActiveX控件等。通过本篇的学习,读者可以掌握Visual C++界面编程的核心技术与应用。  第4篇  专题篇(第15~19章)  本篇主要内容包括:Win32程序开发、文件系统及多语言程序开发、数据库开发、网络及通信程序开发、多线程和DLL技术等。通过本篇的学习,读者可以掌握Visual C++中有关数据库、网络通信编程及系统方面的核心技术及应用。  第5篇  实例篇(第20章)  本篇主要内容包括:会议客户管理信息系统项目案例开发。通过本篇的学习,读者可以全面应用前面章节所学的技术进行软件项目开发,达到具有独立开发项目的能力。  本书读者对象  Visual C++初学者。  利用Visual C++做开发的工程技术人员。  Visual C++开发爱好者。  各类院校计算机专业教师和学生。  社会培训班学员。  计算机编程爱好者。  编  者  于2012年5月  

内容概要

  本书由浅入深,全面、系统地讲解了Visual
C++开发技术。全书各章中都提供了大量开发小实例,章后配置了任务明确的小练习,供读者实战演练和检测掌握情况。同时,还专门录制了翔实的配套教学视频,以帮助读者更好地学习本书内容。这些视频和书中的实例源代码可在本书的配书光盘中找到。
  本书共分5篇。第1篇介绍VC 6.0的安装及开发环境、VC
6.0的程序结构及界面工具;第2篇介绍C/C++语言、输入/输出流库、标准C++库和STL标准模板库、ATL模板库及MFC类库;第3篇介绍Windows控件、菜单栏、工具栏和状态栏、对话框程序开发、文档/视图程序开发、序列化的实现、打印与帮助、ActiveX控件;第4篇介绍Win32程序开发、文件系统及多语言程序开发、数据库开发、网络及通信程序开发、多线程和DLL技术;第5篇详细介绍会议客户管理信息系统项目案例的开发,以提高读者的实战水平。

书籍目录

第1篇 VC 6.0基础篇
第1章 VC 6.0的安装及开发环境( 教学视频:24分钟)
1.1 VC 6.0概述
1.1.1 VC 6.0技术构成
1.1.2 VC 6.0能实现的功能
1.2 VC 6.0的安装
1.2.1 VC 6.0版本选择
1.2.2 安装VC 6.0
1.3 VC 6.0的开发环境
1.3.1 VC 6.0界面工具
1.3.2 联机帮助
1.4 Hello World程序实例
1.5 本章小结
1.6 习题
第2章 VC 6.0的程序结构及界面工具( 教学视频:41分钟)
2.1 工程和工作区
2.1.1 工程与工作区概述
2.1.2 工程与工作区文件
2.1.3 创建工程与工作区
2.2 VC 6.0向导
2.2.1 工程类型
2.2.2 使用工程向导
2.3 VC 6.0调试工具
2.3.1 使用VC 6.0调试器
2.3.2 使用VC 6.0工具
2.3.3 宏及插件
2.4 本章小结
2.5 习题
第2篇 C/C++语言和C++库
第3章 C/C++语言( 教学视频:63分钟)
3.1 基本术语
3.1.1 标识符
3.1.2 关键字
3.1.3 常量
3.1.4 变量
3.2 数据类型
3.2.1 基本数据类型
3.2.2 数组
3.2.3 结构体
3.2.4 共用体
3.2.5 枚举类型
3.2.6 指针和引用
3.2.7 自定义数据类型
3.2.8 数据类型转换
3.3 运算符和表达式
3.3.1 算术运算符
3.3.2 赋值运算符
3.3.3 关系运算符
3.3.4 逻辑运算符
3.3.5 位运算符
3.3.6 三目运算符
3.3.7 增1和减1运算符
3.3.8 逗号运算符
3.3.9 sizeof运算符
3.3.10 new和delete
3.4 控制语句
3.4.1 基本语句和复合语句
3.4.2 空语句
3.4.3 选择语句
3.4.4 循环语句
3.4.5 跳转语句
3.5 函数
3.5.1 函数的定义和调用
3.5.2 带默认形参值的函数
3.5.3 函数的递归调用
3.5.4 内联函数
3.5.5 函数的重载
3.6 类及其成员特性
3.6.1 类的定义
3.6.2 构造函数
3.6.3 析构函数
3.6.4 对象成员初始化
3.6.5 常类型(const)
3.6.6 this指针
3.6.7 类的作用域和对象的生存期
3.6.8 静态成员
3.6.9 友元
3.7 类的高级特性
3.7.1 继承语法
3.7.2 派生类的构造函数和析构函数
3.7.3 多重继承
3.7.4 虚函数
3.7.5 纯虚函数和抽象基类
3.7.6 运算符重载
3.8 本章小结
3.9 习题
第4章 输入/输出流库(iostream库)( 教学视频:30分钟)
4.1 概述
4.2 输入/输出流
4.2.1 输入流类
4.2.2 输出流类
4.2.3 预定义输入/输出流类
4.3 输入/输出文件流
4.3.1 输入文件流类及示例
4.3.2 输出文件流类及示例
4.3.3 输入/输出文件流类及示例
4.4 顺序文件操作
4.5 随机文件操作
4.6 本章小结
4.7 习题
第5章 标准C++库和STL标准模板库( 教学视频:35分钟)
5.1 概述
5.2 类模板
5.2.1 类模板的概念
5.2.2 定义类模板
5.2.3 实现类模板的成员函数
5.2.4 使用类模板
5.3 函数模板
5.3.1 定义函数模板
5.3.2 使用函数模板
5.3.3 模板具体化
5.4 STL标准模板库
5.4.1 概述
5.4.2 顺序容器类及示例
5.4.3 关联容器类及示例
5.4.4 算法函数及示例
5.4.5 迭代器及示例
5.5 本章小结
5.6 习题
第6章 ATL模板库( 教学视频:23分钟)
6.1 概述
6.1.1 COM概述
6.1.2 ATL概述
6.2 创建ATL工程
6.2.1 使用ATL COM向导创建ATL工程
6.2.2 向ATL中添加控件
6.2.3 向ATL中添加属性
6.2.4 添加ATL事件
6.2.5 将ATL部署到Web上
6.2.6 添加ATL属性页
6.3 调试和注册ATL组件
6.3.1 调试ATL工程
6.3.2 注册ATL组件
6.4 本章小结
6.5 习题
第7章 MFC类库( 教学视频:47分钟)
7.1 概述
7.2 基本MFC类及示例
7.2.1 CString类
7.2.2 CString类示例
7.2.3 CTime类
7.2.4 CTime类示例
7.3 数组类及示例
7.3.1 CArray类
7.3.2 CArray类示例
7.3.3 CArray扩展类
7.3.4 CArray扩展类示例
7.4 链表类及示例
7.4.1 CPtrList类
7.4.2 CPtrList类示例
7.5 图像绘制类及示例
7.5.1 CBitmap类
7.5.2 CBitmap类示例
7.5.3 CBrush类
7.5.4 CBrush类示例
7.6 文件操作类及示例
7.6.1 CFile类概述
7.6.2 文件的打开与关闭
7.6.3 文件的检索
7.6.4 CFile类示例
7.7 异常类及示例
7.7.1 MFC异常类简介
7.7.2 异常类CException
7.7.3 异常捕获
7.8 本章小结
7.9 习题
第3篇 VC 6.0界面篇
第8章 Windows控件( 教学视频:60分钟)
8.1 命令按钮控件及示例
8.1.1 命令按钮控件
8.1.2 命令按钮控件类CButton
8.1.3 命令按钮控件示例
8.2 编辑类控件及示例
8.2.1 静态控件
8.2.2 静态控件类CStatic
8.2.3 静态控件类示例
8.2.4 文本编辑框控件
8.2.5 文本编辑框控件类CEdit
8.2.6 文本编辑框控件示例
8.2.7 富文本框控件
8.2.8 富文本框控件类CRichEditCtrl
8.2.9 富文本框控件示例
8.3 选择类控件及示例
8.3.1 组合框控件
8.3.2 组合框控件类CComboBox
8.3.3 组合框控件示例
8.3.4 列表框控件
8.3.5 列表框控件类CListBox
8.3.6 列表框控件示例
8.3.7 单选框控件
8.3.8 单选框控件类
8.3.9 单选框控件示例
8.3.10 复选框控件
8.3.11 复选框控件示例
8.4 时间类控件及示例
8.4.1 日期时间控件
8.4.2 日期时间控件类CDateTimeCtrl
8.4.3 日期时间控件示例
8.4.4 日历控件CMonthCalCtrl
8.4.5 日历控件示例
8.5 视图类控件及示例
8.5.1 列表视图控件
8.5.2 列表视图控件类CListCtrl
8.5.3 列表视图控件示例
8.5.4 树形视图控件
8.5.5 树形视图控件类CTreeCtrl
8.5.6 树形视图控件示例
8.6 框架类控件及示例
8.6.1 Tab控件
8.6.2 Tab控件类CTabCtrl
8.6.3 Tab控件示例
8.7 进度类控件及示例
8.7.1 微调控件
8.7.2 微调控件示例
8.7.3 滑块控件
8.7.4 滑块控件示例
8.7.5 进度条控件
8.7.6 进度条控件示例
8.8 本章小结
8.9 习题
第9章 菜单栏、工具栏和状态栏( 教学视频:34分钟)
9.1 菜单栏的开发
9.1.1 添加菜单栏
9.1.2 实现菜单项命令
9.1.3 更新菜单项状态
9.1.4 设置菜单项快捷键
9.2 工具栏的开发
9.2.1 添加工具栏
9.2.2 实现工具栏按钮命令
9.2.3 更新工具栏按钮状态
9.2.4 停靠和浮动工具栏
9.2.5 动态调整工具栏
9.3 状态栏的开发
9.3.1 使用状态栏
9.3.2 在状态栏中显示命令信息
9.3.3 创建状态栏面板
9.3.4 在状态栏面板上显示信息
9.3.5 更新状态栏面板信息
9.3.6 实现对话框栏
9.4 本章小结
9.5 习题
第10章 对话框程序开发( 教学视频:35分钟)
10.1 对话框的种类及创建方式
10.1.1 创建模态对话框
10.1.2 创建非模态对话框
10.2 对话框的数据交互
10.2.1 使用对话框数据交换机制(DDX)
10.2.2 使用对话框数据校验机制(DDV)
10.3 对话框的创建和应用
10.3.1 创建并初始化对话框
10.3.2 从对话框中获取数据
10.3.3 类型安全地访问对话框中的控件
10.3.4 关闭和销毁对话框
10.4 属性表对话框的创建和应用
10.4.1 创建属性表对话框
10.4.2 在属性表和应用程序之间交换数据
10.4.3 创建非模态属性页对话框
10.4.4 使用属性页对话框的应用按钮
10.5 通用对话框的创建和应用
10.5.1 使用颜色对话框
10.5.2 使用文件对话框
10.5.3 使用查找对话框
10.5.4 使用字体对话框
10.5.5 使用打印对话框
10.6 本章小结
10.7 习题
第11章 文档/视图程序开发( 教学视频:33分钟)
11.1 文档/视图结构的分析
11.1.1 文档/视图结构的特性
11.1.2 文档/视图结构的高级特性
11.2 文档/视图程序的创建
11.2.1 创建单文档视图应用程序
11.2.2 创建多文档视图应用程序
11.3 文档/视图程序的开发
11.3.1 在文档中保存数据
11.3.2 初始化文档视图对象
11.3.3 在视图中显示数据
11.3.4 在单文档上创建多视图
11.4 窗口分割的实现
11.4.1 窗口动态分割
11.4.2 窗口静态分割
11.5 本章小结
11.6 习题
第12章 序列化的实现( 教学视频:30分钟)
12.1 MFC序列化的概念
12.1.1 支持序列化的CObject
12.1.2 序列化类CArchive
12.1.3 MFC序列化机制
12.2 实现MFC序列化
12.2.1 创建序列化类
12.2.2 序列化过程
12.2.3 创建CArchive对象
12.2.4 重载Serialize()序列化函数
12.2.5 使用序列化类
12.3 实现复杂类型数据的序列化
12.4 在CDocument类中实现序列化
12.5 本章小结
12.6 习题
第13章 打印与帮助( 教学视频:22分钟)
13.1 打印机制
13.2 打印文档
13.2.1 实现单页面文档打印
13.2.2 实现多页面文档打印
13.2.3 页眉/页脚打印
13.2.4 实现对话框程序打印
13.3 创建应用程序帮助
13.3.1 创建帮助文件
13.3.2 实现F1帮助
13.3.3 实现主题帮助
13.4 本章小结
13.5 习题
第14章 ActiveX控件( 教学视频:20分钟)
14.1 ActiveX控件工作机制
14.1.1 ActiveX控件架构
14.1.2 ActiveX控件事件
14.1.3 ActiveX控件属性
14.1.4 ActiveX控件方法
14.2 创建ActiveX控件
14.2.1 创建MFC ActiveX控件
14.2.2 创建ActiveX控件容器
14.3 实现ActiveX控件功能
14.3.1 实现ActiveX控件的属性
14.3.2 实现ActiveX控件的方法
14.3.3 实现ActiveX控件的事件
14.4 ActiveX控件注册及查看
14.4.1 注册ActiveX控件
14.4.2 获取ActiveX控件注册信息
14.5 本章小结
14.6 习题
第4篇 专题篇
第15章 Win32程序开发( 教学视频:60分钟)
15.1 Windows编程基础
15.1.1 窗口与句柄
15.1.2 事件与消息
15.1.3 常用的Windows数据类型
15.1.4 Windows API函数
15.2 Windows应用程序分析
15.2.1 WinMain()函数
15.2.2 WinProc()窗口函数
15.3 消息机制
15.3.1 消息映射
15.3.2 处理Windows标准消息
15.3.3 处理命令消息
15.3.4 处理用户自定义消息
15.4 剪切板的使用
15.4.1 剪切板格式
15.4.2 剪切板函数
15.4.3 剪切板消息
15.4.4 实现剪切、复制和粘贴命令
15.5 鼠标键盘控制
15.5.1 鼠标配置
15.5.2 鼠标消息
15.5.3 鼠标示例——绘制直线
15.5.4 键盘消息
15.5.5 键盘字符消息
15.5.6 键盘示例——捕获显示键盘输入
15.6 图形设备接口
15.6.1 绘图基本知识
15.6.2 位图对象及示例
15.6.3 画笔对象及示例
15.6.4 画刷对象及示例
15.6.5 区域对象及示例
15.6.6 字体对象及示例
15.7 本章小结
15.8 习题
第16章 文件系统及多语言程序开发( 教学视频:24分钟)
16.1 文件系统概述
16.1.1 FAT32文件系统和NTFS文件系统
16.1.2 文件压缩
16.1.3 文件加密
16.2 文件操作
16.2.1 生成临时文件名
16.2.2 复制和移动文件
16.2.3 锁定和解锁文件
16.2.4 查找文件
16.2.5 监视文件夹
16.3 使用多字符集
16.3.1 多字符集结构
16.3.2 多字符集宏
16.3.3 多字符集函数
16.3.4 使用通用数据类型
16.4 本章小结
16.5 习题
第17章 数据库开发( 教学视频:58分钟)
17.1 数据库概述
17.1.1 数据库简介
17.1.2 规范化理论
17.1.3 SQL语句
17.1.4 VC 6.0数据库访问接口
17.2 数据绑定控件及示例
17.2.1 数据绑定控件
17.2.2 使用数据绑定控件
17.2.3 创建数据绑定窗体
17.3 ADO访问及示例
17.3.1 ADO数据模型
17.3.2 使用ADO访问数据库的步骤
17.3.3 使用ADO连接数据库
17.3.4 使用ADO从数据库中读取数据
17.3.5 使用ADO向数据库中写数据
17.3.6 使用ADO从数据库中删除记录
17.4 ODBC访问及示例
17.4.1 ODBC API函数
17.4.2 MFC ODBC类
17.4.3 使用MFC ODBC类操作数据库
17.4.4 配置ODBC数据源
17.4.5 自动注册DSN
17.5 OLE DB访问及示例
17.5.1 OLE DB的概念
17.5.2 OLE DB类
17.5.3 使用OLE DB技术访问数据的步骤
17.5.4 OLE DB访问数据库示例
17.6 本章小结
17.7 习题
第18章 网络及通信程序开发( 教学视频:47分钟)
18.1 WinInet编程
18.1.1 WinInet API函数概述
18.1.2 WinInet类概述
18.1.3 HTTP编程
18.1.4 FTP编程
18.2 MAPI编程
18.2.1 MAPI概述
18.2.2 使用MAPI编写电子邮件程序
18.3 串口编程
18.3.1 串口编程基本概念
18.3.2 申请串口资源
18.3.3 配置串口参数
18.3.4 同步读写数据
18.3.5 异步读写数据
18.3.6 MSCOMM控件
18.4 Windows Socket编程
18.4.1 Windows Socket概述
18.4.2 Windows Socket API函数
18.4.3 Windows Socket MFC类
18.4.4 Windows Socket MFC示例
18.5 邮槽
18.5.1 邮槽工作机制
18.5.2 创建邮槽
18.5.3 向邮槽写数据
18.5.4 从邮槽读数据
18.6 管道
18.6.1 管道工作机制
18.6.2 使用匿名管道
18.6.3 使用命名管道
18.7 本章小结
18.8 习题
第19章 多线程和DLL技术( 教学视频:28分钟)
19.1 多线程程序开发
19.1.1 多线程工作机制
19.1.2 Win32多线程程序开发
19.1.3 MFC多线程程序开发
19.1.4 工作者线程和界面线程
19.2 多线程同步处理
19.2.1 等待函数
19.2.2 同步对象
19.2.3 使用Mutex互斥对象
19.2.4 使用Semaphore信号量对象
19.2.5 使用Event事件对象
19.2.6 使用Critical关键段对象
19.3 DLL的种类及创建
19.3.1 应用程序与DLL的区别
19.3.2 DLL的种类
19.3.3 查看DLL接口
19.4 DLL的开发
19.4.1 创建非MFC DLL
19.4.2 创建规则MFC DLL
19.4.3 创建扩展MFC DLL
19.4.4 DLL测试
19.5 本章小结
19.6 习题
第5篇 实例篇
第20章 会议客户管理信息系统( 教学视频:23分钟)
20.1 系统分析与设计
20.1.1 系统需求分析
20.1.2 系统模块结构和流程图
20.1.3 系统功能预览
20.2 数据库设计
20.2.1 数据库需求分析
20.2.2 管理系统E-R图
20.2.3 数据库、表设计
20.2.4 数据表关系图
20.3 系统实现
20.3.1 举办会议模块实现
20.3.2 添加客户模块实现
20.3.3 信息修改模块实现
20.3.4 信息查询模块实现
20.3.5 统计汇总模块实现
20.3.6 参数设置模块实现
20.3.7 用户管理模块实现
20.3.8 打印模块实现
20.4 系统安装配置
20.4.1 数据库操作说明
20.4.2 系统源程序操作说明
20.5 系统测试
20.5.1 编写目的
20.5.2 测试方案和计划
20.5.3 测试执行
20.6 本章小结

章节摘录

版权页:   插图:   COM组件对象模型是一个跨平台的、分布式的、面向对象的可以进行交互的二进制软件组件。COM技术是微软的OLE、ActiveX控件等组件的基础技术。在学习COM组件时,不要将COM作为面向对象的语言,它实际上是一组标准。 COM组件不去指定应用程序的结构,开发语言、结构和实现细节由开发人员来确定。COM只指定对象模型和COM对象与其他对象进行交互的条件。进行交互的对象可以在同一进程中、不同进程中,甚至是分布在不同机器上。交互对象可以使用不同的开发语言开发,在结构上也可以完全不同。因此,COM是一个二进制标准,也就是说,当程序转换为二进制机器码时必须遵守的标准。 COM技术对开发语言的唯一要求就是开发语言可以创建指针结构,并能通过指针调用函数。面向对象的开发语言如C++提供了对COM对象的支持,可以简化COM组件的开发过程。但是其他语言如C、Pascal、Java甚至Basic语言都可以创建COM对象。 COM定义了COM对象的本质特点。通常,软件对象由一组数据和操作数据的函数组成。COM对象通过提供一组相关的函数操作数据,这些函数集称为接口,接口对应的函数称为方法,并且只能通过接口指针来访间接口方法。COM除了指定了基本的二进制对象标准外,还为所有基于COM的技术的基本接口提供了通用函数,并且还提供了所有组件都需要的一些API()函数。COM技术现在已经扩展到定义对象如何在分布式环境中交互,并增加了安全特性来保证系统和组件的安全。

编辑推荐

《由浅入深学Visual C++:基础、进阶与必做300题》是一本介绍C语言的习题集,由浅入深,全面、系统地讲解了Visual C++开发技术。适用于计算机及相关专业的本科生、研究生、具有一定编程基础的程序设计人员,也可供Visual C++开发人员和计算机编程爱好者参考。

图书封面

图书标签Tags

评论、评分、阅读与下载


    由浅入深学Visual C++ PDF格式下载


用户评论 (总计5条)

 
 

  •   内容还可以,就是对应的VC版本低了一点,还是针对VC6的,要更新一下就好了
  •   书本内容基本看的还行,随书光盘还没好好看过。个人觉得就c++的语法来说讲得粗线条了一点。不过如有c语言基础的话就不是问题了。现刚看到90几页,也有可能前文遇到的问题后面会讲到,也有可能光盘里会涉及……这我就暂时不知道了。
  •   涉猎了一些主题,但大部分都讲的比较笼统。
  •   买了不到一个月,胶水就裂开了,裂成2本书的样子
  •   之前在书城看到的这本书,看了一部分,觉得很不错,然后就果断下手在晚上买了,卖家很好,
 

250万本中文图书简介、评论、评分,PDF格式免费下载。 第一图书网 手机版

京ICP备13047387号-7