微信扫一扫,移动浏览光盘
简介
所属分类:计算机网络 > 程序设计> c c++ c# vc vc++ >
本书站在零基础学习的角度,使初学者能尽快掌握 visualc++ 程序设计的精髓。在讲解知识点时,笔者采用从无到有、由浅入深的逐级递进学习方式。
本书涵盖了 visualc++的所有语法知识,包括基础数据类型、类与对象、函数与模板、继承与多态、标准模板库、文件读写等。关于mfc类库应用,本书还详细介绍了菜单、控件、消息映射、工具栏、状态栏、通用类、文本、图形、动态链接库、多线程、网络编程、数据库编程等高级知识。本书对 visualc++的每个知识点的讲解均通过最基本、最常用的方案实现,并辅以简单易懂而贴近工程应用的实例来阐明。本书还附赠1张dvd,内容为笔者为本书录制的全程 多媒体语音教学视频及本书所涉及的源代码。
本书可作为 visualc++的基础教程,适合于 visualc++的初学者,特别是大中专院校刚学习完c++语言的低年级学生。
前言
第一篇 visualc++与c++基础篇
第1章 visualc++ 6.0开发环境和应用程序框架
1.1 安装并测试 visualc++ 6.0
1.1.1 visualc++ 6.0的安装
1.1.2 visualc++ 6.0开发环境
1.1.3 visualc++ 6.0应用程序向导和项目创建
1.2 visualc++ 6.0简介
1.2.1 c/c++编译器
1.2.2 编辑器
1.2.3 资源编辑器和资源符号
1.2.4 连接器和调试器
1.2.5 visualc++6.0的主要菜单项功能
1.2.6 项目和解决方案
1.2.7 本机帮助和联机帮助
1.3 win32基本应用程序的创建
1.3.1 使用appwizard应用程序向导
1.3.2 win32应用程序的生成
1.3.3 visualc++ 6.0的调试:变量跟踪和函数调用栈
1.4 microsoft应用程序框架
1.4.1 全局对象
1.4.2 mfc的消息映射和消息分类
1.5 实例:编写第一个c++程序-hello, c++!
1.6 实例:创建第一个mfc程序-hello, mfc!
1.7 小结
1.8 上机实践练习
第2章 c++语法基础
2.1 c++简介
2.2 数据类型定义和使用
2.2.1 简单变量
2.2.2 算术运算符
2.2.3 枚举、指针和数组
2.2.4 string类和c风格字符串
2.2.5 结构体类型
2.2.6 类类型
2.2.7 实例:成绩管理系统(1.0版)
2.3 运算符、表达式和语句
2.3.1 几种常用的运算符
2.3.2 循环语句:for语句、while语句和do...while语句
2.3.3 判断语句:if语句和switch语句
2.3.4 实例:成绩管理系统(2.0版)
2.4 函数定义和调用
2.4.1 定义函数和函数原型
2.4.2 函数通过指针来调用数组
2.4.3 函数指针
2.4.4 具有引用参数的函数
2.4.5 函数重载
2.4.6 函数模板的定义和使用
2.4.7 实例:成绩管理系统(3.0版)
2.5 类的定义和对象构造
2.5.1 自然界中的类型和c++的类定义
2.5.2 实现类成员函数
2.5.3 实例化类对象并使用
2.5.4 类的构造函数和析构函数
2.5.5 运算符重载与this指针的使用
2.5.6 友元函数和友元类
2.5.7 实例:成绩管理系统(4.0版)
2.6 类继承
2.6.1 is-a关系
2.6.2 多态公有继承
2.6.3 protected访问控制
2.6.4 抽象基类
2.6.5 私有继承和保护继承
2.6.6 多继承
2.6.7 类模板
2.7 c++异常机制
2.7.1 异常处理类型
2.7.2 exception类
2.8 标准模板库(stl)
2.8.1 auto_ptr类的使用
2.8.2 vector模板类的定义和使用
2.8.3 通用算法
2.8.4 实例:使用stl和通用算法开发成绩管理系统(5.0版)
2.9 i/o流和文件
2.9.1 c++的输入和输出
2.9.2 文件输入和输出
2.9.3 实例:在 visualc++ 6.0创建c++源文件,使用磁盘文件读写
2.10 小结
2.11 上机实践练习
第3章 windows编程与mfc基础
3.1 windows编程基础
3.1.1 windowsapi函数
3.1.2 窗口与句柄
3.1.3 事件与消息
3.1.4 常用的 windows数据类型
3.2 windows应用程序分析
3.2.1 winmain函数
3.2.2 创建窗口
3.2.3 消息循环
3.2.4 win proc窗口函数
3.2.5 windows编程实例
3.3 mfc基础
3.3.1 mfc概述
3.3.2 mfc基础类及其层次结构
3.3.3 mfc中的全局函数
3.4 mfc应用程序框架分析
3.4.1 入口函数
3.4.2 应用程序对象
3.4.3 initinstance函数
3.4.4 run函数
3.4.5 mfc的消息映射
3.4.6 mfc消息分类
3.5 小结
3.6 上机实践练习
第二篇 visualc++常用类、控件、资源篇
第4章 基本输入-键盘和鼠标消息
4.1 键盘消息及其处理
4.1.1 键盘消息
4.1.2 键盘消息处理
4.1.3 按键消息的处理
4.1.4 按键消息处理函数
4.1.5 字符消息的处理
4.1.6 创建键盘插入符
4.2 鼠标消息及其处理
4.2.1 鼠标消息
4.2.2 鼠标消息处理函数
4.2.3 鼠标消息处理实例
4.2.4 鼠标光标的创建与使用
4.2.5 捕捉鼠标
4.2.6 锁定鼠标的作用区域
4.3 小结
4.4 上机实践练习
第5章 菜单、工具栏和状态栏编程
5.1 菜单及其相关资源的使用
5.1.1 菜单的种类及开发步骤
5.1.2 菜单的创建与编辑
5.1.3 菜单消息
5.1.4 菜单命令消息的处理
5.1.5 菜单更新消息的处理
5.1.6 为菜单项设置快捷键
5.1.7 弹出菜单的创建与使用
5.2 工具栏的使用
5.2.1 工具栏的创建
5.2.2 编辑工具栏
5.2.3 工具栏命令处理
5.2.4 工具栏类ctoolbar的简单介绍
5.3 状态栏的使用
5.3.1 状态栏的创建
5.3.2 状态栏编程
5.3.3 状态栏类cstatusbar的简单介绍
5.4 小结
5.5 上机实践练习
第6章 使用 windows标准控件
6.1 windows标准控件
6.1.1 windows控件简介
6.1.2 使用对话框编辑器创建控件
6.1.3 控件类的基类cwnd
6.1.4 控件的消息及其处理
6.2 按钮控件
6.2.1 按钮控件简介
6.2.2 按钮控件类cbutton
6.2.3 按钮控件的属性与消息
6.2.4 按钮状态的确定
6.2.5 按钮控件使用实例
6.3 静态控件与编辑控件
6.3.1 静态控件的创建与使用
6.3.2 静态控件类cstatic
6.3.3 编辑控件的创建
6.3.4 编辑控件类cedit
6.3.5 编辑控件的消息
6.3.6 编辑控件的应用实例
6.4 列表框控件和组合框控件
6.4.1 列表框控件的创建
6.4.2 列表框控件类clistbox
6.4.3 列表框控件的消息
6.4.4 列表框控件实例
6.4.5 组合框控件的创建
6.4.6 组合框控件类ccombobox
6.4.7 组合框控件的消息
6.5 微调控件、滑块控件和进度条
6.5.1 微调控件的创建
6.5.2 微调控件的使用
6.5.3 滑块控件的创建
6.5.4 滑块控件的使用
6.5.5 进度条控件的创建及使用
6.5.6 微调控件、滑块控件和进度条编程实例
6.6 列表视图控件和树形视图控件
6.6.1 列表视图控件的创建
6.6.2 列表视图控件类clistctrl
6.6.3 列表视图控件的通知消息
6.6.4 树形视图控件的创建
6.6.5 树形视图控件类ctreectrl
6.6.6 树形视图控件的消息
6.6.7 列表视图和树形视图编程实例
6.7 activex控件的使用
6.7.1 activex控件的结构
6.7.2 visualc++中的组件和控件库
6.7.3 mfc程序中activex控件的使用
6.7.4 activex控件使用实例
6.8 小结
6.9 上机实践练习
第7章 mfc常用的通用类
7.1 字符串类(cstring)
7.1.1 cstring对象的创建
7.1.2 cstring类的成员函数
7.1.3 cstring类的常用操作
7.1.4 cstring的格式化与类型转换
7.2 mfc的集合类
7.2.1 数组类
7.2.2 数组类的使用实例
7.2.3 链表类
7.2.4 链表类的使用实例
7.3 日期、时间类
7.3.1 ctime类
7.3.2 ctime对象的格式化
7.3.3 ctimespan类
7.3.4 计时器的使用
7.4 mfc文件操作类(cfile)
7.4.1 构造文件对象并打开文件
7.4.2 文件的读写操作
7.4.3 文件的定位操作
7.4.4 文件的管理操作
7.4.5 使用cfile类进行文件操作实例
7.5 mfc异常类
7.5.1 mfc异常类简介
7.5.2 文件异常类cfile exception
7.5.3 异常的捕获
7.6 小结
7.7 上机实践练习
第8章 文本、图形输出
8.1 基础知识
8.1.1 gdi绘图的实现
8.1.2 mfc图形对象类
8.1.3 库存gdi对象
8.1.4 与图形绘制有关的简单数据类型
8.1.5 mfc应用程序框架中的图形绘制与刷新
8.2 mfc设备描述表(cdc类)
8.2.1 cdc及其派生类
8.2.2 文本输出
8.2.3 cdc的常用绘图函数
8.3 使用画笔和画刷进行绘图
8.3.1 画笔对象及其使用
8.3.2 使用画笔绘图实例
8.3.3 画刷对象及其使用
8.3.4 使用画刷绘图实例
8.4 字体对象
8.4.1 字体对象的创建
8.4.2 获取字体信息
8.4.3 字体对象使用实例
8.5 位图和区域对象
8.5.1 设备相关位图(ddb)
8.5.2 cbitmap应用实例
8.5.3 设备无关位图(dib)
8.5.4 区域对象(crgn)
8.5.5 crgn应用实例
8.6 坐标系统与映射模式
8.6.1 坐标系统
8.6.2 映射模式
8.6.3 自定义映射模式
8.6.4 坐标映射使用实例
8.7 小结
8.8 上机实践练习
第三篇 visualc++基本应用程序开发篇
第9章 文档/视图结构的应用程序开发
9.1 文档/视图结构
9.1.1 文档/视图结构概述
9.1.2 文档/视图结构的分类
9.2 文档/视图结构应用程序框架分析
9.2.1 利用appwizard创建单文档程序框架
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.3.7 让文档程序支持滚动条
9.4 窗口分割与多视图
9.4.1 窗口分割基础知识
9.4.2 动态分割窗口的实现
9.4.3 静态分割窗口与多视图的实现
9.5 小结
9.6 上机实践练习
第10章 对话框的应用
10.1 对话框的工作方式、种类和创建方法
10.1.1 对话框在应用程序中的工作方式
10.1.2 对话框的种类
10.1.3 对话框模板的创建与编辑
10.2 对话框与程序连接
10.2.1 创建对话框类
10.2.2 为对话框类添加成员变量
10.2.3 对话框数据交换与验证
10.2.4 对话框控件通知消息的处理
10.3 对话框的创建与显示
10.3.1 创建模态对话框
10.3.2 创建非模态对话框
10.3.3 非模态对话框创建实例
10.3.4 基于对话框的应用程序
10.4 属性表对话框
10.4.1 属性表对话框的创建
10.4.2 属性表对话框的运行机制
10.5 消息对话框与公用对话框
10.5.1 消息对话框
10.5.2 颜色对话框
10.5.3 文件对话框
10.5.4 字体对话框
10.5.5 查找、替换对话框
10.5.6 打印对话框
10.5.7 公用对话框使用实例
10.6 小结
10.7 上机实践练习
第11章 动态链接库编程
11.1 基本概念
11.1.1 动态链接库的概念
11.1.2 动态链接库的优点
11.1.3 visualc++ 6.0可开发的dll
11.1.4 dll文件的组成
11.2 dll的创建与调用
11.2.1 win32 dll的创建
11.2.2 dll的导出
11.2.3 应用程序链接dll
11.3 mfc常规dll的创建与使用
11.3.1 基本概念
11.3.2 mfc常规dll的创建
11.3.3 mfc常规dll创建实例
11.3.4 mfc常规dll的调用
11.4 mfc扩展dll的创建与使用
11.4.1 mfc扩展dll的创建
11.4.2 mfc扩展dll的创建实例
11.4.3 mfc扩展dll的调用
11.5 dll的查看与调试
11.5.1 使用depends工具查看dll接口
11.5.2 dll的调试
11.6 小结
11.7 上机实践练习
第四篇 visualc++程序开发提高篇
第12章 多线程程序开发
12.1 多线程的引入
12.1.1 单线程程序的不足
12.1.2 问题的解决
12.2 多线程编程的基础知识
12.2.1 进程和线程
12.2.2 spy++工具
12.2.3 win32 api对多线程编程的支持
12.2.4 mfc对多线程编程的支持
12.3 多线程程序开发
12.3.1 使用win32 api函数开发多线程程序
12.3.2 mfc用户界面线程的开发
12.3.3 mfc工作者线程的开发
12.4 线程间的通信
12.4.1 使用全局变量实现线程间的通信
12.4.2 使用自定义的消息实现线程间的通信
12.5 线程的同步
12.5.1 等待函数
12.5.2 cevent类实现线程同步
12.5.3 使用cevent类实现线程同步实例
12.5.4 ccriticalsection类实现线程同步
12.5.5 ccriticalsection类实现线程同步实例
12.5.6 csemaphore类实现线程同步
12.5.7 csemaphore类实现线程同步实例
12.6 小结
12.7 上机实践练习
第13章 visualc++网络编程
13.1 网络通信及开发基础
13.1.1 tcp/ip协议
13.1.2 tcp/ip协议
13.1.3 windowssockets基础
13.1.4 客户端/服务器模式
13.2 基本网络通信开发
13.2.1 casyncsocket类及常用成员函数的使用
13.2.2 使用winsock进行无连接的通信
13.2.3 无连接通信实例
13.2.4 使用winsock进行有连接的通信
13.2.5 有连接通信实例
13.3 网络 程序设计与开发
13.3.1 网络程序的一些概念
13.3.2 socket事件
13.3.3 socket事件的激发控制
13.3.4 socket信息的获取与处理
13.3.5 网络程序开发实例
13.4 wini net开发inter net客户端程序
13.4.1 mfc wini net开发包
13.4.2 wini net开发客户端程序的流程
13.4.3 wini net开发http客户端程序实例
13.5 简单的 web浏览器开发
13.5.1 chtmlview视图类简介
13.5.2 浏览器开发实例
13.6 小结
13.7 上机实践练习
第14章 visualc++数据库编程
14.1 数据库基础
14.1.1 数据库的基本概念
14.1.2 数据库管理系统(dbms)
14.1.3 结构化查询语言( sql)
14.2 数据库开发技术简介
14.2.1 odbc api/mfc odbc技术
14.2.2 dao技术
14.2.3 ado技术
14.3 在 visualc++中使用ado开发数据库应用程序
14.3.1 visualc++对ado的支持
14.3.2 创建数据库与实例工程
14.3.3 引入ado对象
14.3.4 连接数据源
14.3.5 开发技术-连接对象(connection)
14.3.6 创建表并添加数据
14.3.7 开发技术-ado对象命令的执行
14.3.8 开发技术-recordset对象
14.3.9 遍历、删除、编辑记录的实现
14.4 使用odbc数据源连接数据库
14.4.1 手动实现设置odbc数据源
14.4.2 ado连接odbc数据源
14.4.3 visualc++程序实现设置odbc数据源
14.4.4 使用 visualc++程序设置odbc数据源实例
14.5 小结
14.6 上机实践练习
第15章 使用 visualc++ 6.0开发家庭财务管理系统
15.1 提出问题:设计一个家庭财务管理系统
15.1.1 功能概述
15.1.2 界面需求
15.2 数据库设计
15.2.1 数据关系分析
15.2.2 e-r图设计
15.2.3 数据库表的生成
15.3 算法设计
15.3.1 连接数据库
15.3.2 添加数据
15.3.3 修改数据库内容
15.3.4 统计数据库信息
15.4 软件项目开发过程
15.4.1 开发家庭财务管理系统项目的流程
15.4.2 根据e-r图创建数据库表
15.4.3 功能研发的准备工作
15.4.4 实现算法设计
15.4.5 测试
15.5 小结
第16章 常见的面试题及解答技巧
16.1 理论基础知识:数学、智力题
面试题1:请把一盒蛋糕切成8份,分给8个人,但蛋糕盒里还必须留有一份
面试题2:小猫奔跑问题
面试题3:4、4、10和7这4个数只使用一次,运用加、减、乘、除,怎么得出24
面试题4:为什么下水道的盖子是圆的
面试题5:美国有多少辆私家车
面试题6:为什么镜子中的影像可以颠倒左右,却不能颠倒上下
面试题7:请估算一下密西西比河的水的总质量
16.2 程序设计面试题
面试题8:如何理解面向对象和面向过程?用c++编写的程序就是面向对象程序吗
面试题9:在c/c++ 程序设计中,局部变量能否和全局变量重名
面试题10:如何引用一个已经定义过的全局变量
面试题11:全局变量是否可以定义在可被多个.c文件包含的头文件中
面试题12:static全局变量与普通的全局变量有什么区别
面试题13:对于一个频繁使用的短小函数,在c和c++语言中分别用什么
面试题14:关键字const有什么含义
面试题15:虚函数和普通函数有什么不同
面试题16:抽象基类不能实例化,为什么还有抽象基类这个语法特性
面试题17:在c++ 程序设计语言中,vector和数组有何不同
面试题18:c++编译器自动完成和调用了哪些函数
面试题19:为什么要定义拷贝构造函数
面试题20:名称空间有何作用
面试题21:在构造函数中初始化和使用初始化列表有什么不同
面试题22:为什么要避免将数据成员放在公共域中
面试题23:为什么要尽量定义const
面试题24:c和c++的注释风格有何不同,为什么尽量选择c++风格的注释
面试题25:程序编译时编译器会有一些警告信息,你如何看待这些警告信息
16.3 计算机理论知识题
面试题26:基本的数据结构有哪些类型
面试题27:什么是平衡二叉树(avl树)
面试题28:给出一系列的二进制码,如何判断这些编码是前缀码
面试题29:什么是左式堆
面试题30:请简单阐述3nf(第三范式)和bcnf(巴克斯范式)的基本概念
面试题31:数据库并发操作可能会带来什么问题?如何防止这些问题
面试题32:简述cmm和cmmi
面试题33:在一个查询中,使用哪一个关键字能够除去重复列值
面试题34:什么是快照?它的作用是什么
面试题35:简述存储过程和触发器的相关概念
面试题36: sql server2000是否支持行级锁定,有什么好处
面试题37:事务是什么?事务具备哪些特性
面试题38:事前触发和事后触发有何区别?语句级触发和行级触发有何区别
面试题39:解决死锁的方法有哪些
面试题40:提高数据库运行效率的办法有哪些
面试题41:以你的工作经验,简述数据库的设计过程
面试题42:在为视图创建索引前,视图本身必须满足哪些条件
面试题43:什么是 sql server的确定性函数和不确定性函数
面试题44:哪类视图是可以更新的?哪类视图是不可更新的?各举一例说明
面试题45:所有的视图是否都可以更新?为什么
面试题46:什么是基本表?什么是视图
面试题47:数据库中为什么要有视图?试述视图的优点
16.4 程序设计与算法题
面试题48:使用c++,输入一个字符串,将其逆序后输出
面试题49:判断给定代码是否有问题
面试题50:用c++编写判断操作系统是16位还是32位的程序,不能用sizeof函数
面试题51:在不用第三方参数的情况下,交换两个参数的值
面试题52:程序解读,判断问题
面试题53:使用 sql语句进行数据库建表与查询
面试题54:编写一个算法,利用栈的基本运算返回指定栈的栈底元素
面试题55:写出两种中序遍历二叉树的方法
面试题56:简述哈夫曼树的意义及其创建过程
16.5 小结
·由浅入深,循序渐进,从零开始学vc,一点都不难
·编程基础、编程进阶、编程应用、项目实战、上机练习、面试指南
·150个实例、1个案例、27个练习题、56个面试题
本书主要由谢贤芳、古万荣编著,其他参与编著和资料整理的人员有冯华君、刘博、刘燕、叶青、张军、张立娟、张艺、彭涛、徐磊、戎伟、朱毅、李佳、李玉涵、杨利润、杨春娇、武鹏、潘中强、王丹、王宁、王西莉、石淑珍、程彩红、邵毅、郑丹丹、郑海平、顾旭光。
笔者
2012年1月
目录
前言
第一篇 Visual C++与C++基础篇
第1章 Visual C++ 6.0开发环境和应用程序框架 1
1.1 安装并测试Visual C++ 6.0 1
1.1.1 Visual C++ 6.0的安装 1
1.1.2 Visual C++ 6.0开发环境 5
1.1.3 Visual C++ 6.0应用程序向导和项目创建 5
1.2 Visual C++ 6.0简介 7
1.2.1 C/C++编译器 7
1.2.2 编辑器 8
1.2.3 资源编辑器和资源符号 8
1.2.4 连接器和调试器 9
1.2.5 Visual C++6.0的主要菜单项功能 10
1.2.6 项目和解决方案 15
1.2.7 本机帮助和联机帮助 15
1.3 Win32基本应用程序的创建 15
1.3.1 使用AppWizard应用程序向导 15
1.3.2 Win32应用程序的生成 17
1.3.3 Visual C++ 6.0的调试:变量跟踪和函数调用栈 20
1.4 Microsoft应用程序框架 22
1.4.1 全局对象 22
1.4.2 MFC的消息映射和消息分类 22
1.5 实例:编写第一个C++程序—Hello, C++! 23
1.6 实例:创建第一个MFC程序—Hello, MFC! 25
1.7 小结 25
1.8 上机实践练习 26
第2章 C++语法基础 27
2.1 C++简介 27
2.2 数据类型定义和使用 28
2.2.1 简单变量 28
2.2.2 算术运算符 32
2.2.3 枚举、指针和数组 33
2.2.4 string类和C风格字符串 36
2.2.5 结构体类型 38
2.2.6 类类型 39
2.2.7 实例:成绩管理系统(1.0版) 43
2.3 运算符、表达式和语句 46
2.3.1 几种常用的运算符 46
2.3.2 循环语句:for语句、while语句和do...while语句 48
2.3.3 判断语句:if语句和switch语句 50
2.3.4 实例:成绩管理系统(2.0版) 53
2.4 函数定义和调用 57
2.4.1 定义函数和函数原型 57
2.4.2 函数通过指针来调用数组 58
2.4.3 函数指针 59
2.4.4 具有引用参数的函数 59
2.4.5 函数重载 62
2.4.6 函数模板的定义和使用 64
2.4.7 实例:成绩管理系统(3.0版) 65
2.5 类的定义和对象构造 67
2.5.1 自然界中的类型和C++的类定义 67
2.5.2 实现类成员函数 69
2.5.3 实例化类对象并使用 71
2.5.4 类的构造函数和析构函数 71
2.5.5 运算符重载与this指针的使用 74
2.5.6 友元函数和友元类 75
2.5.7 实例:成绩管理系统(4.0版) 78
2.6 类继承 82
2.6.1 is-a关系 82
2.6.2 多态公有继承 84
2.6.3 protected访问控制 86
2.6.4 抽象基类 88
2.6.5 私有继承和保护继承 88
2.6.6 多继承 89
2.6.7 类模板 90
2.7 C++异常机制 91
2.7.1 异常处理类型 91
2.7.2 exception类 93
2.8 标准模板库(STL) 93
2.8.1 auto_ptr类的使用 93
2.8.2 vector模板类的定义和使用 94
2.8.3 通用算法 95
2.8.4 实例:使用STL和通用算法开发成绩管理系统(5.0版) 97
2.9 I/O流和文件 102
2.9.1 C++的输入和输出 102
2.9.2 文件输入和输出 102
2.9.3 实例:在Visual C++ 6.0创建C++源文件,使用磁盘文件读写 103
2.10 小结 104
2.11 上机实践练习 105
第3章 Windows编程与MFC基础 106
3.1 Windows编程基础 106
3.1.1 Windows API函数 106
3.1.2 窗口与句柄 106
3.1.3 事件与消息 107
3.1.4 常用的Windows数据类型 108
3.2 Windows应用程序分析 108
3.2.1 WinMain函数 109
3.2.2 创建窗口 109
3.2.3 消息循环 110
3.2.4 WinProc窗口函数 111
3.2.5 Windows编程实例 112
3.3 MFC基础 114
3.3.1 MFC概述 114
3.3.2 MFC基础类及其层次结构 114
3.3.3 MFC中的全局函数 116
3.4 MFC应用程序框架分析 116
3.4.1 入口函数 116
3.4.2 应用程序对象 117
3.4.3 InitInstance函数 118
3.4.4 Run函数 119
3.4.5 MFC的消息映射 121
3.4.6 MFC消息分类 121
3.5 小结 123
3.6 上机实践练习 123
第二篇 Visual C++常用类、控件、资源篇
第4章 基本输入—键盘和鼠标消息 125
4.1 键盘消息及其处理 125
4.1.1 键盘消息 125
4.1.2 键盘消息处理 126
4.1.3 按键消息的处理 126
4.1.4 按键消息处理函数 128
4.1.5 字符消息的处理 131
4.1.6 创建键盘插入符 134
4.2 鼠标消息及其处理 137
4.2.1 鼠标消息 137
4.2.2 鼠标消息处理函数 137
4.2.3 鼠标消息处理实例 138
4.2.4 鼠标光标的创建与使用 141
4.2.5 捕捉鼠标 143
4.2.6 锁定鼠标的作用区域 143
4.3 小结 144
4.4 上机实践练习 144
第5章 菜单、工具栏和状态栏编程 146
5.1 菜单及其相关资源的使用 146
5.1.1 菜单的种类及开发步骤 146
5.1.2 菜单的创建与编辑 147
5.1.3 菜单消息 149
5.1.4 菜单命令消息的处理 149
5.1.5 菜单更新消息的处理 151
5.1.6 为菜单项设置快捷键 154
5.1.7 弹出菜单的创建与使用 155
5.2 工具栏的使用 158
5.2.1 工具栏的创建 159
5.2.2 编辑工具栏 161
5.2.3 工具栏命令处理 162
5.2.4 工具栏类CToolBar的简单介绍 162
5.3 状态栏的使用 163
5.3.1 状态栏的创建 163
5.3.2 状态栏编程 164
5.3.3 状态栏类CStatusBar的简单介绍 167
5.4 小结 168
5.5 上机实践练习 168
第6章 使用Windows标准控件 170
6.1 Windows标准控件 170
6.1.1 Windows控件简介 171
6.1.2 使用对话框编辑器创建控件 171
6.1.3 控件类的基类CWnd 173
6.1.4 控件的消息及其处理 175
6.2 按钮控件 175
6.2.1 按钮控件简介 176
6.2.2 按钮控件类CButton 176
6.2.3 按钮控件的属性与消息 177
6.2.4 按钮状态的确定 178
6.2.5 按钮控件使用实例 179
6.3 静态控件与编辑控件 184
6.3.1 静态控件的创建与使用 184
6.3.2 静态控件类CStatic 185
6.3.3 编辑控件的创建 185
6.3.4 编辑控件类CEdit 186
6.3.5 编辑控件的消息 188
6.3.6 编辑控件的应用实例 188
6.4 列表框控件和组合框控件 190
6.4.1 列表框控件的创建 190
6.4.2 列表框控件类CListBox 191
6.4.3 列表框控件的消息 193
6.4.4 列表框控件实例 193
6.4.5 组合框控件的创建 196
6.4.6 组合框控件类CComboBox 197
6.4.7 组合框控件的消息 198
6.5 微调控件、滑块控件和进度条 198
6.5.1 微调控件的创建 198
6.5.2 微调控件的使用 199
6.5.3 滑块控件的创建 201
6.5.4 滑块控件的使用 202
6.5.5 进度条控件的创建及使用 203
6.5.6 微调控件、滑块控件和进度条编程实例 204
6.6 列表视图控件和树形视图控件 206
6.6.1 列表视图控件的创建 206
6.6.2 列表视图控件类CListCtrl 207
6.6.3 列表视图控件的通知消息 209
6.6.4 树形视图控件的创建 209
6.6.5 树形视图控件类CTreeCtrl 210
6.6.6 树形视图控件的消息 212
6.6.7 列表视图和树形视图编程实例 213
6.7 ActiveX控件的使用 216
6.7.1 ActiveX控件的结构 217
6.7.2 Visual C++中的组件和控件库 218
6.7.3 MFC程序中ActiveX控件的使用 218
6.7.4 ActiveX控件使用实例 219
6.8 小结 224
6.9 上机实践练习 224
第7章 MFC常用的通用类 225
7.1 字符串类(CString) 225
7.1.1 CString对象的创建 225
7.1.2 CString类的成员函数 226
7.1.3 CString类的常用操作 227
7.1.4 CString的格式化与类型转换 229
7.2 MFC的集合类 230
7.2.1 数组类 231
7.2.2 数组类的使用实例 231
7.2.3 链表类 233
7.2.4 链表类的使用实例 235
7.3 日期、时间类 237
7.3.1 CTime类 238
7.3.2 CTime对象的格式化 239
7.3.3 CTimeSpan类 240
7.3.4 计时器的使用 241
7.4 MFC文件操作类(CFile) 242
7.4.1 构造文件对象并打开文件 242
7.4.2 文件的读写操作 243
7.4.3 文件的定位操作 244
7.4.4 文件的管理操作 245
7.4.5 使用CFile类进行文件操作实例 246
7.5 MFC异常类 248
7.5.1 MFC异常类简介 248
7.5.2 文件异常类CFileException 249
7.5.3 异常的捕获 250
7.6 小结 251
7.7 上机实践练习 252
第8章 文本、图形输出 253
8.1 基础知识 253
8.1.1 GDI绘图的实现 253
8.1.2 MFC图形对象类 254
8.1.3 库存GDI对象 255
8.1.4 与图形绘制有关的简单数据类型 256
8.1.5 MFC应用程序框架中的图形绘制与刷新 258
8.2 MFC设备描述表(CDC类) 258
8.2.1 CDC及其派生类 258
8.2.2 文本输出 260
8.2.3 CDC的常用绘图函数 262
8.3 使用画笔和画刷进行绘图 265
8.3.1 画笔对象及其使用 265
8.3.2 使用画笔绘图实例 266
8.3.3 画刷对象及其使用 267
8.3.4 使用画刷绘图实例 268
8.4 字体对象 270
8.4.1 字体对象的创建 270
8.4.2 获取字体信息 272
8.4.3 字体对象使用实例 273
8.5 位图和区域对象 274
8.5.1 设备相关位图(DDB) 274
8.5.2 CBitmap应用实例 276
8.5.3 设备无关位图(DIB) 277
8.5.4 区域对象(CRgn) 278
8.5.5 CRgn应用实例 279
8.6 坐标系统与映射模式 281
8.6.1 坐标系统 281
8.6.2 映射模式 281
8.6.3 自定义映射模式 283
8.6.4 坐标映射使用实例 283
8.7 小结 285
8.8 上机实践练习 285
第三篇 Visual C++基本应用程序开发篇
第9章 文档/视图结构的应用程序开发 287
9.1 文档/视图结构 287
9.1.1 文档/视图结构概述 287
9.1.2 文档/视图结构的分类 288
9.2 文档/视图结构应用程序框架分析 289
9.2.1 利用AppWizard创建单文档程序框架 289
9.2.2 程序框架中的主要类及相互关系 292
9.2.3 文档类、视图类核心函数及作用 294
9.2.4 新建、保存和打开的实现 295
9.2.5 多文档应用程序框架 296
9.3 文档/视图结构应用程序的开发 298
9.3.1 实现目标 298
9.3.2 创建基本的程序框架 298
9.3.3 创建文档数据 300
9.3.4 在视图类中实现绘图操作 300
9.3.5 文档的序列化 304
9.3.6 对例程数据进行序列化 308
9.3.7 让文档程序支持滚动条 311
9.4 窗口分割与多视图 313
9.4.1 窗口分割基础知识 313
9.4.2 动态分割窗口的实现 315
9.4.3 静态分割窗口与多视图的实现 317
9.5 小结 321
9.6 上机实践练习 321
第10章 对话框的应用 322
10.1 对话框的工作方式、种类和创建方法 322
10.1.1 对话框在应用程序中的工作方式 322
10.1.2 对话框的种类 322
10.1.3 对话框模板的创建与编辑 324
10.2 对话框与程序连接 326
10.2.1 创建对话框类 326
10.2.2 为对话框类添加成员变量 326
10.2.3 对话框数据交换与验证 328
10.2.4 对话框控件通知消息的处理 330
10.3 对话框的创建与显示 332
10.3.1 创建模态对话框 332
10.3.2 创建非模态对话框 334
10.3.3 非模态对话框创建实例 335
10.3.4 基于对话框的应用程序 339
10.4 属性表对话框 342
10.4.1 属性表对话框的创建 342
10.4.2 属性表对话框的运行机制 345
10.5 消息对话框与公用对话框 347
10.5.1 消息对话框 347
10.5.2 颜色对话框 350
10.5.3 文件对话框 351
10.5.4 字体对话框 352
10.5.5 查找、替换对话框 354
10.5.6 打印对话框 356
10.5.7 公用对话框使用实例 358
10.6 小结 363
10.7 上机实践练习 363
第11章 动态链接库编程 364
11.1 基本概念 364
11.1.1 动态链接库的概念 364
11.1.2 动态链接库的优点 365
11.1.3 Visual C++ 6.0可开发的DLL 366
11.1.4 DLL文件的组成 366
11.2 DLL的创建与调用 367
11.2.1 Win32 DLL的创建 367
11.2.2 DLL的导出 368
11.2.3 应用程序链接DLL 369
11.3 MFC常规DLL的创建与使用 373
11.3.1 基本概念 373
11.3.2 MFC常规DLL的创建 374
11.3.3 MFC常规DLL创建实例 375
11.3.4 MFC常规DLL的调用 377
11.4 MFC扩展DLL的创建与使用 378
11.4.1 MFC扩展DLL的创建 378
11.4.2 MFC扩展DLL的创建实例 379
11.4.3 MFC扩展DLL的调用 383
11.5 DLL的查看与调试 384
11.5.1 使用Depends工具查看DLL接口 384
11.5.2 DLL的调试 384
11.6 小结 386
11.7 上机实践练习 386
第四篇 Visual C++程序开发提高篇
第12章 多线程程序开发 389
12.1 多线程的引入 389
12.1.1 单线程程序的不足 389
12.1.2 问题的解决 390
12.2 多线程编程的基础知识 391
12.2.1 进程和线程 391
12.2.2 Spy++工具 391
12.2.3 Win32 API对多线程编程的支持 392
12.2.4 MFC对多线程编程的支持 395
12.3 多线程程序开发 399
12.3.1 使用Win32 API函数开发多线程程序 399
12.3.2 MFC用户界面线程的开发 402
12.3.3 MFC工作者线程的开发 405
12.4 线程间的通信 406
12.4.1 使用全局变量实现线程间的通信 406
12.4.2 使用自定义的消息实现线程间的通信 409
12.5 线程的同步 412
12.5.1 等待函数 412
12.5.2 CEvent类实现线程同步 414
12.5.3 使用CEvent类实现线程同步实例 415
12.5.4 CCriticalSection类实现线程同步 417
12.5.5 CCriticalSection类实现线程同步实例 418
12.5.6 CSemaphore类实现线程同步 421
12.5.7 CSemaphore类实现线程同步实例 422
12.6 小结 423
12.7 上机实践练习 423
第13章 Visual C++网络编程 425
13.1 网络通信及开发基础 425
13.1.1 TCP/IP协议 425
13.1.2 TCP/IP协议 427
13.1.3 Windows Sockets基础 427
13.1.4 客户端/服务器模式 428
13.2 基本网络通信开发 428
13.2.1 CAsyncSocket类及常用成员函数的使用 428
13.2.2 使用WinSock进行无连接的通信 433
13.2.3 无连接通信实例 433
13.2.4 使用WinSock进行有连接的通信 438
13.2.5 有连接通信实例 438
13.3 网络程序设计与开发 443
13.3.1 网络程序的一些概念 443
13.3.2 Socket事件 443
13.3.3 Socket事件的激发控制 444
13.3.4 Socket信息的获取与处理 445
13.3.5 网络程序开发实例 447
13.4 WinInet开发Internet客户端程序 455
13.4.1 MFC WinInet开发包 455
13.4.2 WinInet开发客户端程序的流程 457
13.4.3 WinInet开发HTTP客户端程序实例 457
13.5 简单的Web浏览器开发 459
13.5.1 CHtmlView视图类简介 459
13.5.2 浏览器开发实例 461
13.6 小结 465
13.7 上机实践练习 465
第14章 Visual C++数据库编程 467
14.1 数据库基础 467
14.1.1 数据库的基本概念 467
14.1.2 数据库管理系统(DBMS) 468
14.1.3 结构化查询语言(SQL) 468
14.2 数据库开发技术简介 471
14.2.1 ODBC API/MFC ODBC技术 471
14.2.2 DAO技术 473
14.2.3 ADO技术 473
14.3 在Visual C++中使用ADO开发数据库应用程序 475
14.3.1 Visual C++对ADO的支持 475
14.3.2 创建数据库与实例工程 476
14.3.3 引入ADO对象 479
14.3.4 连接数据源 479
14.3.5 开发技术—连接对象(Connection) 480
14.3.6 创建表并添加数据 482
14.3.7 开发技术—ADO对象命令的执行 483
14.3.8 开发技术—Recordset对象 485
14.3.9 遍历、删除、编辑记录的实现 491
14.4 使用ODBC数据源连接数据库 495
14.4.1 手动实现设置ODBC数据源 495
14.4.2 ADO连接ODBC数据源 497
14.4.3 Visual C++程序实现设置ODBC数据源 497
14.4.4 使用Visual C++程序设置ODBC数据源实例 498
14.5 小结 499
14.6 上机实践练习 500
第15章 使用Visual C++ 6.0开发家庭财务管理系统 502
15.1 提出问题:设计一个家庭财务管理系统 502
15.1.1 功能概述 502
15.1.2 界面需求 503
15.2 数据库设计 503
15.2.1 数据关系分析 503
15.2.2 E-R图设计 504
15.2.3 数据库表的生成 505
15.3 算法设计 506
15.3.1 连接数据库 506
15.3.2 添加数据 507
15.3.3 修改数据库内容 508
15.3.4 统计数据库信息 508
15.4 软件项目开发过程 508
15.4.1 开发家庭财务管理系统项目的流程 508
15.4.2 根据E-R图创建数据库表 508
15.4.3 功能研发的准备工作 510
15.4.4 实现算法设计 514
15.4.5 测试 517
15.5 小结 517
第16章 常见的面试题及解答技巧 519
16.1 理论基础知识:数学、智力题 519
面试题1:请把一盒蛋糕切成8份,分给8个人,但蛋糕盒里还必须留有一份 519
面试题2:小猫奔跑问题 519
面试题3:4、4、10和7这4个数只使用一次,运用加、减、乘、除,怎么得出24 519
面试题4:为什么下水道的盖子是圆的 520
面试题5:美国有多少辆私家车 520
面试题6:为什么镜子中的影像可以颠倒左右,却不能颠倒上下 520
面试题7:请估算一下密西西比河的水的总质量 520
16.2 程序设计面试题 520
面试题8:如何理解面向对象和面向过程?用C++编写的程序就是面向对象程序吗 520
面试题9:在C/C++程序设计中,局部变量能否和全局变量重名 521
面试题10:如何引用一个已经定义过的全局变量 521
面试题11:全局变量是否可以定义在可被多个.C文件包含的头文件中 521
面试题12:static全局变量与普通的全局变量有什么区别 521
面试题13:对于一个频繁使用的短小函数,在C和C++语言中分别用什么 521
面试题14:关键字const有什么含义 521
面试题15:虚函数和普通函数有什么不同 521
面试题16:抽象基类不能实例化,为什么还有抽象基类这个语法特性 522
面试题17:在C++程序设计语言中,vector和数组有何不同 522
面试题18:C++编译器自动完成和调用了哪些函数 522
面试题19:为什么要定义拷贝构造函数 522
面试题20:名称空间有何作用 522
面试题21:在构造函数中初始化和使用初始化列表有什么不同 523
面试题22:为什么要避免将数据成员放在公共域中 523
面试题23:为什么要尽量定义const 523
面试题24:C和C++的注释风格有何不同,为什么尽量选择C++风格的注释 523
面试题25:程序编译时编译器会有一些警告信息,你如何看待这些警告信息 524
16.3 计算机理论知识题 524
面试题26:基本的数据结构有哪些类型 524
面试题27:什么是平衡二叉树(AVL树) 525
面试题28:给出一系列的二进制码,如何判断这些编码是前缀码 525
面试题29:什么是左式堆 525
面试题30:请简单阐述3NF(第三范式)和BCNF(巴克斯范式)的基本概念 525
面试题31:数据库并发操作可能会带来什么问题?如何防止这些问题 525
面试题32:简述CMM和CMMI 526
面试题33:在一个查询中,使用哪一个关键字能够除去重复列值 526
面试题34:什么是快照?它的作用是什么 526
面试题35:简述存储过程和触发器的相关概念 526
面试题36:SQL Server 2000是否支持行级锁定,有什么好处 526
面试题37:事务是什么?事务具备哪些特性 527
面试题38:事前触发和事后触发有何区别?语句级触发和行级触发有何区别 527
面试题39:解决死锁的方法有哪些 527
面试题40:提高数据库运行效率的办法有哪些 527
面试题41:以你的工作经验,简述数据库的设计过程 528
面试题42:在为视图创建索引前,视图本身必须满足哪些条件 528
面试题43:什么是SQL Server的确定性函数和不确定性函数 528
面试题44:哪类视图是可以更新的?哪类视图是不可更新的?各举一例说明 529
面试题45:所有的视图是否都可以更新?为什么 529
面试题46:什么是基本表?什么是视图 529
面试题47:数据库中为什么要有视图?试述视图的优点 529
16.4 程序设计与算法题 529
面试题48:使用C++,输入一个字符串,将其逆序后输出 529
面试题49:判断给定代码是否有问题 530
面试题50:用C++编写判断操作系统是16位还是32位的程序,不能用sizeof函数 530
面试题51:在不用第三方参数的情况下,交换两个参数的值 530
面试题52:程序解读,判断问题 531
面试题53:使用SQL语句进行数据库建表与查询 531
面试题54:编写一个算法,利用栈的基本运算返回指定栈的栈底元素 532
面试题55:写出两种中序遍历二叉树的方法 532
面试题56:简述哈夫曼树的意义及其创建过程 533
16.5 小结 534
第一篇 Visual C++与C++基础篇
第1章 Visual C++ 6.0开发环境和应用程序框架 1
1.1 安装并测试Visual C++ 6.0 1
1.1.1 Visual C++ 6.0的安装 1
1.1.2 Visual C++ 6.0开发环境 5
1.1.3 Visual C++ 6.0应用程序向导和项目创建 5
1.2 Visual C++ 6.0简介 7
1.2.1 C/C++编译器 7
1.2.2 编辑器 8
1.2.3 资源编辑器和资源符号 8
1.2.4 连接器和调试器 9
1.2.5 Visual C++6.0的主要菜单项功能 10
1.2.6 项目和解决方案 15
1.2.7 本机帮助和联机帮助 15
1.3 Win32基本应用程序的创建 15
1.3.1 使用AppWizard应用程序向导 15
1.3.2 Win32应用程序的生成 17
1.3.3 Visual C++ 6.0的调试:变量跟踪和函数调用栈 20
1.4 Microsoft应用程序框架 22
1.4.1 全局对象 22
1.4.2 MFC的消息映射和消息分类 22
1.5 实例:编写第一个C++程序—Hello, C++! 23
1.6 实例:创建第一个MFC程序—Hello, MFC! 25
1.7 小结 25
1.8 上机实践练习 26
第2章 C++语法基础 27
2.1 C++简介 27
2.2 数据类型定义和使用 28
2.2.1 简单变量 28
2.2.2 算术运算符 32
2.2.3 枚举、指针和数组 33
2.2.4 string类和C风格字符串 36
2.2.5 结构体类型 38
2.2.6 类类型 39
2.2.7 实例:成绩管理系统(1.0版) 43
2.3 运算符、表达式和语句 46
2.3.1 几种常用的运算符 46
2.3.2 循环语句:for语句、while语句和do...while语句 48
2.3.3 判断语句:if语句和switch语句 50
2.3.4 实例:成绩管理系统(2.0版) 53
2.4 函数定义和调用 57
2.4.1 定义函数和函数原型 57
2.4.2 函数通过指针来调用数组 58
2.4.3 函数指针 59
2.4.4 具有引用参数的函数 59
2.4.5 函数重载 62
2.4.6 函数模板的定义和使用 64
2.4.7 实例:成绩管理系统(3.0版) 65
2.5 类的定义和对象构造 67
2.5.1 自然界中的类型和C++的类定义 67
2.5.2 实现类成员函数 69
2.5.3 实例化类对象并使用 71
2.5.4 类的构造函数和析构函数 71
2.5.5 运算符重载与this指针的使用 74
2.5.6 友元函数和友元类 75
2.5.7 实例:成绩管理系统(4.0版) 78
2.6 类继承 82
2.6.1 is-a关系 82
2.6.2 多态公有继承 84
2.6.3 protected访问控制 86
2.6.4 抽象基类 88
2.6.5 私有继承和保护继承 88
2.6.6 多继承 89
2.6.7 类模板 90
2.7 C++异常机制 91
2.7.1 异常处理类型 91
2.7.2 exception类 93
2.8 标准模板库(STL) 93
2.8.1 auto_ptr类的使用 93
2.8.2 vector模板类的定义和使用 94
2.8.3 通用算法 95
2.8.4 实例:使用STL和通用算法开发成绩管理系统(5.0版) 97
2.9 I/O流和文件 102
2.9.1 C++的输入和输出 102
2.9.2 文件输入和输出 102
2.9.3 实例:在Visual C++ 6.0创建C++源文件,使用磁盘文件读写 103
2.10 小结 104
2.11 上机实践练习 105
第3章 Windows编程与MFC基础 106
3.1 Windows编程基础 106
3.1.1 Windows API函数 106
3.1.2 窗口与句柄 106
3.1.3 事件与消息 107
3.1.4 常用的Windows数据类型 108
3.2 Windows应用程序分析 108
3.2.1 WinMain函数 109
3.2.2 创建窗口 109
3.2.3 消息循环 110
3.2.4 WinProc窗口函数 111
3.2.5 Windows编程实例 112
3.3 MFC基础 114
3.3.1 MFC概述 114
3.3.2 MFC基础类及其层次结构 114
3.3.3 MFC中的全局函数 116
3.4 MFC应用程序框架分析 116
3.4.1 入口函数 116
3.4.2 应用程序对象 117
3.4.3 InitInstance函数 118
3.4.4 Run函数 119
3.4.5 MFC的消息映射 121
3.4.6 MFC消息分类 121
3.5 小结 123
3.6 上机实践练习 123
第二篇 Visual C++常用类、控件、资源篇
第4章 基本输入—键盘和鼠标消息 125
4.1 键盘消息及其处理 125
4.1.1 键盘消息 125
4.1.2 键盘消息处理 126
4.1.3 按键消息的处理 126
4.1.4 按键消息处理函数 128
4.1.5 字符消息的处理 131
4.1.6 创建键盘插入符 134
4.2 鼠标消息及其处理 137
4.2.1 鼠标消息 137
4.2.2 鼠标消息处理函数 137
4.2.3 鼠标消息处理实例 138
4.2.4 鼠标光标的创建与使用 141
4.2.5 捕捉鼠标 143
4.2.6 锁定鼠标的作用区域 143
4.3 小结 144
4.4 上机实践练习 144
第5章 菜单、工具栏和状态栏编程 146
5.1 菜单及其相关资源的使用 146
5.1.1 菜单的种类及开发步骤 146
5.1.2 菜单的创建与编辑 147
5.1.3 菜单消息 149
5.1.4 菜单命令消息的处理 149
5.1.5 菜单更新消息的处理 151
5.1.6 为菜单项设置快捷键 154
5.1.7 弹出菜单的创建与使用 155
5.2 工具栏的使用 158
5.2.1 工具栏的创建 159
5.2.2 编辑工具栏 161
5.2.3 工具栏命令处理 162
5.2.4 工具栏类CToolBar的简单介绍 162
5.3 状态栏的使用 163
5.3.1 状态栏的创建 163
5.3.2 状态栏编程 164
5.3.3 状态栏类CStatusBar的简单介绍 167
5.4 小结 168
5.5 上机实践练习 168
第6章 使用Windows标准控件 170
6.1 Windows标准控件 170
6.1.1 Windows控件简介 171
6.1.2 使用对话框编辑器创建控件 171
6.1.3 控件类的基类CWnd 173
6.1.4 控件的消息及其处理 175
6.2 按钮控件 175
6.2.1 按钮控件简介 176
6.2.2 按钮控件类CButton 176
6.2.3 按钮控件的属性与消息 177
6.2.4 按钮状态的确定 178
6.2.5 按钮控件使用实例 179
6.3 静态控件与编辑控件 184
6.3.1 静态控件的创建与使用 184
6.3.2 静态控件类CStatic 185
6.3.3 编辑控件的创建 185
6.3.4 编辑控件类CEdit 186
6.3.5 编辑控件的消息 188
6.3.6 编辑控件的应用实例 188
6.4 列表框控件和组合框控件 190
6.4.1 列表框控件的创建 190
6.4.2 列表框控件类CListBox 191
6.4.3 列表框控件的消息 193
6.4.4 列表框控件实例 193
6.4.5 组合框控件的创建 196
6.4.6 组合框控件类CComboBox 197
6.4.7 组合框控件的消息 198
6.5 微调控件、滑块控件和进度条 198
6.5.1 微调控件的创建 198
6.5.2 微调控件的使用 199
6.5.3 滑块控件的创建 201
6.5.4 滑块控件的使用 202
6.5.5 进度条控件的创建及使用 203
6.5.6 微调控件、滑块控件和进度条编程实例 204
6.6 列表视图控件和树形视图控件 206
6.6.1 列表视图控件的创建 206
6.6.2 列表视图控件类CListCtrl 207
6.6.3 列表视图控件的通知消息 209
6.6.4 树形视图控件的创建 209
6.6.5 树形视图控件类CTreeCtrl 210
6.6.6 树形视图控件的消息 212
6.6.7 列表视图和树形视图编程实例 213
6.7 ActiveX控件的使用 216
6.7.1 ActiveX控件的结构 217
6.7.2 Visual C++中的组件和控件库 218
6.7.3 MFC程序中ActiveX控件的使用 218
6.7.4 ActiveX控件使用实例 219
6.8 小结 224
6.9 上机实践练习 224
第7章 MFC常用的通用类 225
7.1 字符串类(CString) 225
7.1.1 CString对象的创建 225
7.1.2 CString类的成员函数 226
7.1.3 CString类的常用操作 227
7.1.4 CString的格式化与类型转换 229
7.2 MFC的集合类 230
7.2.1 数组类 231
7.2.2 数组类的使用实例 231
7.2.3 链表类 233
7.2.4 链表类的使用实例 235
7.3 日期、时间类 237
7.3.1 CTime类 238
7.3.2 CTime对象的格式化 239
7.3.3 CTimeSpan类 240
7.3.4 计时器的使用 241
7.4 MFC文件操作类(CFile) 242
7.4.1 构造文件对象并打开文件 242
7.4.2 文件的读写操作 243
7.4.3 文件的定位操作 244
7.4.4 文件的管理操作 245
7.4.5 使用CFile类进行文件操作实例 246
7.5 MFC异常类 248
7.5.1 MFC异常类简介 248
7.5.2 文件异常类CFileException 249
7.5.3 异常的捕获 250
7.6 小结 251
7.7 上机实践练习 252
第8章 文本、图形输出 253
8.1 基础知识 253
8.1.1 GDI绘图的实现 253
8.1.2 MFC图形对象类 254
8.1.3 库存GDI对象 255
8.1.4 与图形绘制有关的简单数据类型 256
8.1.5 MFC应用程序框架中的图形绘制与刷新 258
8.2 MFC设备描述表(CDC类) 258
8.2.1 CDC及其派生类 258
8.2.2 文本输出 260
8.2.3 CDC的常用绘图函数 262
8.3 使用画笔和画刷进行绘图 265
8.3.1 画笔对象及其使用 265
8.3.2 使用画笔绘图实例 266
8.3.3 画刷对象及其使用 267
8.3.4 使用画刷绘图实例 268
8.4 字体对象 270
8.4.1 字体对象的创建 270
8.4.2 获取字体信息 272
8.4.3 字体对象使用实例 273
8.5 位图和区域对象 274
8.5.1 设备相关位图(DDB) 274
8.5.2 CBitmap应用实例 276
8.5.3 设备无关位图(DIB) 277
8.5.4 区域对象(CRgn) 278
8.5.5 CRgn应用实例 279
8.6 坐标系统与映射模式 281
8.6.1 坐标系统 281
8.6.2 映射模式 281
8.6.3 自定义映射模式 283
8.6.4 坐标映射使用实例 283
8.7 小结 285
8.8 上机实践练习 285
第三篇 Visual C++基本应用程序开发篇
第9章 文档/视图结构的应用程序开发 287
9.1 文档/视图结构 287
9.1.1 文档/视图结构概述 287
9.1.2 文档/视图结构的分类 288
9.2 文档/视图结构应用程序框架分析 289
9.2.1 利用AppWizard创建单文档程序框架 289
9.2.2 程序框架中的主要类及相互关系 292
9.2.3 文档类、视图类核心函数及作用 294
9.2.4 新建、保存和打开的实现 295
9.2.5 多文档应用程序框架 296
9.3 文档/视图结构应用程序的开发 298
9.3.1 实现目标 298
9.3.2 创建基本的程序框架 298
9.3.3 创建文档数据 300
9.3.4 在视图类中实现绘图操作 300
9.3.5 文档的序列化 304
9.3.6 对例程数据进行序列化 308
9.3.7 让文档程序支持滚动条 311
9.4 窗口分割与多视图 313
9.4.1 窗口分割基础知识 313
9.4.2 动态分割窗口的实现 315
9.4.3 静态分割窗口与多视图的实现 317
9.5 小结 321
9.6 上机实践练习 321
第10章 对话框的应用 322
10.1 对话框的工作方式、种类和创建方法 322
10.1.1 对话框在应用程序中的工作方式 322
10.1.2 对话框的种类 322
10.1.3 对话框模板的创建与编辑 324
10.2 对话框与程序连接 326
10.2.1 创建对话框类 326
10.2.2 为对话框类添加成员变量 326
10.2.3 对话框数据交换与验证 328
10.2.4 对话框控件通知消息的处理 330
10.3 对话框的创建与显示 332
10.3.1 创建模态对话框 332
10.3.2 创建非模态对话框 334
10.3.3 非模态对话框创建实例 335
10.3.4 基于对话框的应用程序 339
10.4 属性表对话框 342
10.4.1 属性表对话框的创建 342
10.4.2 属性表对话框的运行机制 345
10.5 消息对话框与公用对话框 347
10.5.1 消息对话框 347
10.5.2 颜色对话框 350
10.5.3 文件对话框 351
10.5.4 字体对话框 352
10.5.5 查找、替换对话框 354
10.5.6 打印对话框 356
10.5.7 公用对话框使用实例 358
10.6 小结 363
10.7 上机实践练习 363
第11章 动态链接库编程 364
11.1 基本概念 364
11.1.1 动态链接库的概念 364
11.1.2 动态链接库的优点 365
11.1.3 Visual C++ 6.0可开发的DLL 366
11.1.4 DLL文件的组成 366
11.2 DLL的创建与调用 367
11.2.1 Win32 DLL的创建 367
11.2.2 DLL的导出 368
11.2.3 应用程序链接DLL 369
11.3 MFC常规DLL的创建与使用 373
11.3.1 基本概念 373
11.3.2 MFC常规DLL的创建 374
11.3.3 MFC常规DLL创建实例 375
11.3.4 MFC常规DLL的调用 377
11.4 MFC扩展DLL的创建与使用 378
11.4.1 MFC扩展DLL的创建 378
11.4.2 MFC扩展DLL的创建实例 379
11.4.3 MFC扩展DLL的调用 383
11.5 DLL的查看与调试 384
11.5.1 使用Depends工具查看DLL接口 384
11.5.2 DLL的调试 384
11.6 小结 386
11.7 上机实践练习 386
第四篇 Visual C++程序开发提高篇
第12章 多线程程序开发 389
12.1 多线程的引入 389
12.1.1 单线程程序的不足 389
12.1.2 问题的解决 390
12.2 多线程编程的基础知识 391
12.2.1 进程和线程 391
12.2.2 Spy++工具 391
12.2.3 Win32 API对多线程编程的支持 392
12.2.4 MFC对多线程编程的支持 395
12.3 多线程程序开发 399
12.3.1 使用Win32 API函数开发多线程程序 399
12.3.2 MFC用户界面线程的开发 402
12.3.3 MFC工作者线程的开发 405
12.4 线程间的通信 406
12.4.1 使用全局变量实现线程间的通信 406
12.4.2 使用自定义的消息实现线程间的通信 409
12.5 线程的同步 412
12.5.1 等待函数 412
12.5.2 CEvent类实现线程同步 414
12.5.3 使用CEvent类实现线程同步实例 415
12.5.4 CCriticalSection类实现线程同步 417
12.5.5 CCriticalSection类实现线程同步实例 418
12.5.6 CSemaphore类实现线程同步 421
12.5.7 CSemaphore类实现线程同步实例 422
12.6 小结 423
12.7 上机实践练习 423
第13章 Visual C++网络编程 425
13.1 网络通信及开发基础 425
13.1.1 TCP/IP协议 425
13.1.2 TCP/IP协议 427
13.1.3 Windows Sockets基础 427
13.1.4 客户端/服务器模式 428
13.2 基本网络通信开发 428
13.2.1 CAsyncSocket类及常用成员函数的使用 428
13.2.2 使用WinSock进行无连接的通信 433
13.2.3 无连接通信实例 433
13.2.4 使用WinSock进行有连接的通信 438
13.2.5 有连接通信实例 438
13.3 网络程序设计与开发 443
13.3.1 网络程序的一些概念 443
13.3.2 Socket事件 443
13.3.3 Socket事件的激发控制 444
13.3.4 Socket信息的获取与处理 445
13.3.5 网络程序开发实例 447
13.4 WinInet开发Internet客户端程序 455
13.4.1 MFC WinInet开发包 455
13.4.2 WinInet开发客户端程序的流程 457
13.4.3 WinInet开发HTTP客户端程序实例 457
13.5 简单的Web浏览器开发 459
13.5.1 CHtmlView视图类简介 459
13.5.2 浏览器开发实例 461
13.6 小结 465
13.7 上机实践练习 465
第14章 Visual C++数据库编程 467
14.1 数据库基础 467
14.1.1 数据库的基本概念 467
14.1.2 数据库管理系统(DBMS) 468
14.1.3 结构化查询语言(SQL) 468
14.2 数据库开发技术简介 471
14.2.1 ODBC API/MFC ODBC技术 471
14.2.2 DAO技术 473
14.2.3 ADO技术 473
14.3 在Visual C++中使用ADO开发数据库应用程序 475
14.3.1 Visual C++对ADO的支持 475
14.3.2 创建数据库与实例工程 476
14.3.3 引入ADO对象 479
14.3.4 连接数据源 479
14.3.5 开发技术—连接对象(Connection) 480
14.3.6 创建表并添加数据 482
14.3.7 开发技术—ADO对象命令的执行 483
14.3.8 开发技术—Recordset对象 485
14.3.9 遍历、删除、编辑记录的实现 491
14.4 使用ODBC数据源连接数据库 495
14.4.1 手动实现设置ODBC数据源 495
14.4.2 ADO连接ODBC数据源 497
14.4.3 Visual C++程序实现设置ODBC数据源 497
14.4.4 使用Visual C++程序设置ODBC数据源实例 498
14.5 小结 499
14.6 上机实践练习 500
第15章 使用Visual C++ 6.0开发家庭财务管理系统 502
15.1 提出问题:设计一个家庭财务管理系统 502
15.1.1 功能概述 502
15.1.2 界面需求 503
15.2 数据库设计 503
15.2.1 数据关系分析 503
15.2.2 E-R图设计 504
15.2.3 数据库表的生成 505
15.3 算法设计 506
15.3.1 连接数据库 506
15.3.2 添加数据 507
15.3.3 修改数据库内容 508
15.3.4 统计数据库信息 508
15.4 软件项目开发过程 508
15.4.1 开发家庭财务管理系统项目的流程 508
15.4.2 根据E-R图创建数据库表 508
15.4.3 功能研发的准备工作 510
15.4.4 实现算法设计 514
15.4.5 测试 517
15.5 小结 517
第16章 常见的面试题及解答技巧 519
16.1 理论基础知识:数学、智力题 519
面试题1:请把一盒蛋糕切成8份,分给8个人,但蛋糕盒里还必须留有一份 519
面试题2:小猫奔跑问题 519
面试题3:4、4、10和7这4个数只使用一次,运用加、减、乘、除,怎么得出24 519
面试题4:为什么下水道的盖子是圆的 520
面试题5:美国有多少辆私家车 520
面试题6:为什么镜子中的影像可以颠倒左右,却不能颠倒上下 520
面试题7:请估算一下密西西比河的水的总质量 520
16.2 程序设计面试题 520
面试题8:如何理解面向对象和面向过程?用C++编写的程序就是面向对象程序吗 520
面试题9:在C/C++程序设计中,局部变量能否和全局变量重名 521
面试题10:如何引用一个已经定义过的全局变量 521
面试题11:全局变量是否可以定义在可被多个.C文件包含的头文件中 521
面试题12:static全局变量与普通的全局变量有什么区别 521
面试题13:对于一个频繁使用的短小函数,在C和C++语言中分别用什么 521
面试题14:关键字const有什么含义 521
面试题15:虚函数和普通函数有什么不同 521
面试题16:抽象基类不能实例化,为什么还有抽象基类这个语法特性 522
面试题17:在C++程序设计语言中,vector和数组有何不同 522
面试题18:C++编译器自动完成和调用了哪些函数 522
面试题19:为什么要定义拷贝构造函数 522
面试题20:名称空间有何作用 522
面试题21:在构造函数中初始化和使用初始化列表有什么不同 523
面试题22:为什么要避免将数据成员放在公共域中 523
面试题23:为什么要尽量定义const 523
面试题24:C和C++的注释风格有何不同,为什么尽量选择C++风格的注释 523
面试题25:程序编译时编译器会有一些警告信息,你如何看待这些警告信息 524
16.3 计算机理论知识题 524
面试题26:基本的数据结构有哪些类型 524
面试题27:什么是平衡二叉树(AVL树) 525
面试题28:给出一系列的二进制码,如何判断这些编码是前缀码 525
面试题29:什么是左式堆 525
面试题30:请简单阐述3NF(第三范式)和BCNF(巴克斯范式)的基本概念 525
面试题31:数据库并发操作可能会带来什么问题?如何防止这些问题 525
面试题32:简述CMM和CMMI 526
面试题33:在一个查询中,使用哪一个关键字能够除去重复列值 526
面试题34:什么是快照?它的作用是什么 526
面试题35:简述存储过程和触发器的相关概念 526
面试题36:SQL Server 2000是否支持行级锁定,有什么好处 526
面试题37:事务是什么?事务具备哪些特性 527
面试题38:事前触发和事后触发有何区别?语句级触发和行级触发有何区别 527
面试题39:解决死锁的方法有哪些 527
面试题40:提高数据库运行效率的办法有哪些 527
面试题41:以你的工作经验,简述数据库的设计过程 528
面试题42:在为视图创建索引前,视图本身必须满足哪些条件 528
面试题43:什么是SQL Server的确定性函数和不确定性函数 528
面试题44:哪类视图是可以更新的?哪类视图是不可更新的?各举一例说明 529
面试题45:所有的视图是否都可以更新?为什么 529
面试题46:什么是基本表?什么是视图 529
面试题47:数据库中为什么要有视图?试述视图的优点 529
16.4 程序设计与算法题 529
面试题48:使用C++,输入一个字符串,将其逆序后输出 529
面试题49:判断给定代码是否有问题 530
面试题50:用C++编写判断操作系统是16位还是32位的程序,不能用sizeof函数 530
面试题51:在不用第三方参数的情况下,交换两个参数的值 530
面试题52:程序解读,判断问题 531
面试题53:使用SQL语句进行数据库建表与查询 531
面试题54:编写一个算法,利用栈的基本运算返回指定栈的栈底元素 532
面试题55:写出两种中序遍历二叉树的方法 532
面试题56:简述哈夫曼树的意义及其创建过程 533
16.5 小结 534
零基础学Visual C++
光盘服务联系方式: 020-38250260 客服QQ:4006604884
云图客服:
用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问
Video Player
×
Audio Player
×
pdf Player
×
亲爱的云图用户,
光盘内的文件都可以直接点击浏览哦
无需下载,在线查阅资料!