首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 图书频道 > 计算机与网络 > 程序设计 >

把脉VC++(含CD光盘1张)

2010-04-30 
基本信息·出版社:电子工业出版社 ·页码:622 页 ·出版日期:2009年07月 ·ISBN:7121086174/9787121086175 ·条形码:9787121086175 ·版本:第1版 · ...
商家名称 信用等级 购买信息 订购本书
把脉VC++(含CD光盘1张) 去商家看看
把脉VC++(含CD光盘1张) 去商家看看

 把脉VC++(含CD光盘1张)


基本信息·出版社:电子工业出版社
·页码:622 页
·出版日期:2009年07月
·ISBN:7121086174/9787121086175
·条形码:9787121086175
·版本:第1版
·装帧:平装
·开本:16
·正文语种:中文
·丛书名:C/C++开发专家

内容简介 《把脉VC++》着重介绍Visual C++的关键技术,即Visual C++程序员在实际工程开发中经常遇到的几大问题:数据的内存表达、数据的转换与处理、数据的持久化、数据的界面展现、数据的传输与交换方面的技术。全书内容主要包括:软件项目中的开发技术、关于Visual C++的话题、常见对象的表达、对象的赋值与转换、对象容器、使用文件存取对象、使用注册表存取对象、使用数据库存取对象、界面的布局、界面的绘制与交互、界面的美化、进程间对象的传输与调用、线程间对象的传输与调用、模块间对象的传输与调用、网络间对象的传输与调用等。通过对《把脉VC++》的学习,可以帮助读者快速掌握Visual C++的编程技巧及编程思想。
随书所附光盘包含书中实例源文件。
《把脉VC++》面向初、中级读者,适合于广大有志于学习Visual C++的读者,也适合作为高等院校相关专业师生的参考书,还可作为相关培训机构的教材。
编辑推荐 《把脉VC++》已被MFC绑死,离开MFC眼前漆黑一片。
一直对Windows API、C/C++标准库与MFC/ATL之间的暧昧关系心存疑惑。
接触Visual C++很长时间,却—直感觉没有真正入门。
觉得ViSLIal C++是死水一片,前途黯淡。
具有严重的术语恐惧症,看到诸如M FC、ATL、STL、boost、QT、BCGControlBar、SkinMagic等字眼如坠云雾。
多次暗下决,崾学好ViSLIal C++,都以失败而告终。
看了很多的书,却“撂爪就忘”,感觉看了也白看。
实在弄不清楚CR"r、Secure CRT-是什么意思。
感觉Visual C++很好、很强大,高手如云,却不知自、己身处哪个层次
理不清头绪,感觉Visual C++要学的太多,因此常常放弃。
常常问自己是否还有必要学习VisLJal C++,担心它与Web开发技术之间的关系。
实在不明白MessageBoxA、MessageBoxW和MessageBox是什么关系。
总认为Visual C++开发的界面难以出手,却又不知道如何改进。
用过MFC::CMap,但不知道std::map实为何物。
感觉MFC消息处理机制挺“神”的,总感觉自己的代码身陷迷宫。
很担心Visual C++与Web应用之间的交互。
看见ODBC、DAO、OLE DB和ADO,总感觉是文字游戏,缺乏感性认识。
对.NET开发技术心存疑惑和抵触,多年以来仍抱着VistjaI C++6.0不放。
缺乏调试技巧,看别人的工程项目看不懂。
纸上谈兵很久,书买了不少,遇到实际项目还是犯晕,不知道从何下手,无法独立行走于江湖。
不清楚如何在MSDN中查询到自己需要的内容。
尽量不在VisLJal C++中接触到COM能绕多远绕多远。
目录
第1篇 Visual C++速览
第1章 软件项目中的开发技术
1.1 关于软件项目的话题
1.2 软件项目的开发过程
1.2.1 软件的开发过程
1.2.2 排错(debug)
1.2.3 原型(prototype)
1.2.4 重构(refactor)
1.3 软件架构及软件分层
1.3.1 软件架构的原则
1.3.2 C/S与B/S模式
1.3.3 MVC模式
1.3.4 文档/视图结构
1.3.5 流行的三层结构
1.4 在Visual C++项目中的四大主脉技术
1.4.1 对象的建模与表达
1.4.2 对象的持久化
1.4.3 对象的界面展现
1.4.4 对象的传输与调用
1.4.5 从QQ和MSN说起
1.4.6 四大技术与三层结构
1.5 回到客栈管理系统
1.5.1 对象的建模与表达
1.5.2 对象的持久化
1.5.3 对象的界面展现
1.5.4 对象的传输与调用
1.6 本章小结
第2章 关于Visual C++的话题
2.1 Visual C++与C++
2.1.1 Visual C++不是唯一的C++编译器
2.1.2 Visual C++不是唯一的
C++ IDE
2.1.3 Visual C++及MFC/ATL的版本
2.1.4 备受争议的Visual C++
2.1.5 Visual C++与boost、QT
2.2 熟悉Visual C++ IDE
2.2.1 文件、项目与解决方案
2.2.2 Visual C++代码编辑器
2.2.3 Visual C++资源编辑器
2.2.4 Visual C++应用向导
2.2.5 Visual C++调试器
2.3 脱离Visual C++编写程序
2.3.1 Dev-C++
2.3.2 控制台程序的编写
2.3.3 Windows程序的编写
2.4 使用Visual C++编写程序
2.4.1 Win32控制台程序的编写
2.4.2 让控制台程序支持MFC/ATL
2.4.3 Win32窗口程序的编写
2.4.4 MFC/ATL应用程序的编写
2.4.5 CLR程序的编写
2.5 茴字的N种写法
2.5.1 使用Windows API
2.5.2 使用C++标准库(stdcpp)
2.5.3 使用CRT(C运行时期库)
2.5.4 使用CRT库的宽字符版本
2.5.5 使用CRT库的安全版本
2.5.6 使用MFC/ATL
2.5.7 使用C++/CLI
2.5.8 该采用哪一种写法
2.6 Visual C++伴侣
2.6.1 源代码
2.6.2 MSDN与MSDN库
2.6.3 Visual Studio Tools
2.6.4 Visual Assist X
2.6.5 Visual C++资源网站
2.7 本章小结

第2篇 Visual C++中对象的建模与表达
第3章 常见对象的表达
3.1 C++基本类型
3.1.1 原始类型
3.1.2 复合类型
3.1.3 自定义类型
3.1.4 __intN
3.1.5
3.2 字符与字符串
3.2.1
3.2.2 C-style字符串
3.2.3 Windows字符类型
3.2.4
3.2.5 std::string
3.2.6 ATL::CString
3.3 日期与时间
3.3.1
3.3.2 ATL::CTime与ATL::CTimeSpan
3.3.3 ATL::COleDateTime与ATL::COleDateTimeSpa
3.3.4 时间的格式化
3.4 位置与尺寸
3.4.1 POINT、SIZE、RECT
3.4.2 ATL::CPoint、ATL::CSize、ATL::CRect
3.5 智能指针(smart pointer)
3.5.1 std::auto_ptr
3.5.2 ATL::CComPtr与 ATL::CComQIPtr
3.6 Windows数据类型
3.6.1 基本数据类型
3.6.2 Windows句柄
3.7 MFC对象模型
3.7.1 MFC::CObject
3.7.2 CObject与RTTI
3.7.3 CRuntimeClass
3.7.4 百般非议MFC
3.8 MFC与ATL
3.9 命名规则与名字危机
3.10 本章小结
第4章 对象的赋值与转换
4.1 对象的初始化与赋值
4.1.1 struct与class
4.1.2 对象的初始化
4.1.3 聚合(aggregate)
4.1.4 对象的赋值
4.1.5 sizeof及字节对齐
4.1.6 内存块操作函数memxxx
4.1.7 POD对象
4.2 对象的类型转换(cast)
4.2.1 隐式转换
4.2.2 显式转换
4.2.3 向上转换与向下转换
4.2.4 变体VARIANT
4.2.5 _variant_t、CComVariant与
COleVariant、CDBVariant
4.3 对象的数值转换(conversion)
4.3.1 xtoy
4.3.2 sprintf、sscanf
4.3.3 std::stringstream
4.4 数学运算
4.4.1
4.4.2 随机数
4.4.3 复数std::complex
4.5 字符与编码
4.5.1 字节与字符
4.5.2 ANSI、MBCS与UNICODE
4.5.3 TCHAR、_T与_TEXT
4.5.4 strcpy、wcscpy与_tcscpy
4.5.5 MessageBoxA、MessageBoxW与MessageBox
4.5.6 ATL::CStringT与std::basic_string
4.5.7 BSTR、_bstr_t与ATL::CComBSTR
4.5.8 字符串的长度
4.5.9 字符的编码转换
4.6 使用第三方库
4.6.1 万能类型boost::any
4.6.2 万能转换器boost::lexical_cast
4.6.3 有理数boost::rational
4.7 本章小结
第5章 对象容器
5.1 常见容器
5.1.1 向量(vector)
5.1.2 列表(list)
5.1.3 映射(map)
5.1.4 集合(set)
5.1.5 队列(queue)
5.1.6 栈(stack)
5.1.7 选择合适的集合
5.2 C++标准容器
5.2.1 std::vector
5.2.2 std::list
5.2.3 std::deque
5.2.4 std::map、std::multimap
5.2.5 std::set、std::multiset
5.2.6 std::bitset
5.2.7 std::queue、std:: priority_queue
5.2.8 std::stack
5.3 泛型算法
5.3.1 指示器
5.3.2 函数对象
5.3.3 泛型算法介绍
5.4 MFC/ATL容器
5.4.1 MFC::CArray
5.4.2 MFC::CList
5.4.3 MFC::CMap
5.4.4 集合元素的遍历
5.5 本章小结

第3篇 Visual C++中对象的持久化
第6章 使用文件存取对象
6.1 文件操作的几种方式
6.1.1 使用CRT函数std::fxxx()
6.1.2 使用标准C++库std::fstream
6.1.3 使用Windows API
6.1.4 使用MFC::CFile
6.1.5 文本文件与二进制文件
6.2 使用文本文件存取对象
6.2.1 文本内容的存取
6.2.2 properties文件的读取
6.2.3 INI文件的读取
6.2.4 CSV文件的读取
6.3 使用二进制文件存取对象
6.3.1 文件指针的定位
6.3.2 定长数据块的读写
6.3.3 变长数据块的读写
6.3.4 使用MFC::CArchive
6.3.5 Windows资源文件的读取
6.4 使用XML存取对象
6.4.1 XML及其语法
6.4.2 XML的解析方式
6.4.3 使用MsXML存取XML
6.4.4 使用ADO.NET存取XML
6.5 本章小结
第7章 使用注册表存取对象
7.1 注册表及其结构
7.1.1 注册表的结构
7.1.2 常见的注册表根键
7.2 使用注册表API
7.2.1 关于注册表操作的API
7.2.2 使用Windows API写注册表
7.2.3 使用Windows API读注册表
7.3 使用CRegKey存取注册表
7.3.1 ATL::CRegKey
7.3.2 使用CRegKey写注册表
7.3.3 使用CRegKey读注册表
7.4 本章小结
第8章 使用数据库存取对象
8.1 数据库概述
8.1.1 关系型数据库
8.1.2 SQL语句
8.1.3 常见数据库访问技术
8.2 使用ODBC操纵数据库
8.2.1 ODBC
8.2.2 使用ODBC API
8.2.3 使用MFC::CDatabase
8.2.4 封装自己的Recordset
8.3 使用DAO操纵数据库
8.4 使用OLE DB操纵数据库
8.4.1 OLE DB的结构
8.4.2 OLE DB使用者模板
8.4.3 使用OLE DB访问数据库
8.4.4 使用ATL向导创建OLE DB使用者
8.5 使用ADO操纵数据库
8.5.1 ADO是对象封装接口
8.5.2 常见数据源的连接串
8.5.3 使用ADODB组件
8.5.4 使用ADODC控件
8.6 使用ADO.NET操纵数据库
8.6.1 ADO.NET与ADO
8.6.2 ADO.NET的联机模式
8.6.3 ADO.NET的脱机模式
8.7 本章小结

第4篇 Visual C++中对象的界面展现
第9章 界面的布局
9.1 常见界面元素
9.1.1 窗口(Window)
9.1.2 菜单(Menu)
9.1.3 控制栏(Control Bar)
9.1.4 客户区与非客户区
9.1.5 位图与图标(Bitmap、Icon)
9.2 界面的静态布局
9.2.1 使用对话框
9.2.2 使用控件
9.2.3 动态创建对话框和控件
9.2.4 使用代码控制控件
9.2.5 映射控件变量
9.2.6 使用容器放置控件
9.2.7 通用对话框
9.2.8 使用Windows Forms
9.3 界面的动态布局
9.3.1 框架窗口
9.3.2 文档/视图结构
9.3.3 文档与文档模板
9.3.4 视图与CView
9.3.5 框架窗口都忙些什么
9.3.6 拆分窗口
9.4 系统托盘
9.5 本章小结
第10章 界面的绘制与交互
10.1 窗口与绘图
10.1.1 在DOS下画一个圈
10.1.2 在Windows下画一个圈
10.1.3 使用GDI绘制的假按钮
10.1.4 创建真正的按钮
10.1.5 使用GDI+绘图
10.2 让界面交互起来
10.2.1 一个假的控制台消息系统
10.2.2 真正的Windows消息系统
10.2.3 鼠标的3次不同点击
10.3 MFC对消息机制做了什么?
10.3.1 消息映射(Message Mapping)
10.3.2 消息映射宏
10.3.3 消息路由
(Message Route)
10.3.4 消息反射
(Message Reflection)
10.3.5 消息泵
(Message Pump)
10.4 使用第三方库
10.4.1 DirectX
10.4.2 OpenGL
10.4.3 Qt
10.5 本章小结
第11章 界面的美化
11.1 界面美化的基本途径
11.1.1 设定窗口样式(Window Style)
11.1.2 调用函数设定控件的扩展样式
11.1.3 调用函数设定颜色
11.1.4 调用函数设定背景图
11.2 重载消息进行界面自绘
11.2.1 WM_PAINT
11.2.2 OnDraw()与OnPaint()
11.2.3 WM_ERASEBKGND
11.2.4 =WM_CTLCOLOR
11.2.5 =WM_DRAWITEM
11.2.6 =WM_MEASUREITEM
11.2.7 =NM_CUSTOMDRAW
11.3 使用ActiveX控件增强界面
11.3.1 ActiveX控件的注册
11.3.2 在对话框中引入控件
11.3.3 将控件映射成变量
11.3.4 常见ActiveX控件推荐
11.4 使用第三方库
11.4.1 Xtreme Toolkit与
BCGControlBar
11.4.2 SkinMagic与换肤技术
11.5 本章小结

第5篇 Visual C++中对象的传输与调用
第12章 进程间对象的传输与调用
12.1 进程的操作
12.1.1 进程及其常见操作
12.1.2 关于进程操作的CRT函数
12.1.3 关于进程操作的Windows API
12.1.4 Windows进程的创建
12.1.5 Windows进程的终止
12.2 进程间的通信
12.2.1 使用Windows消息传输对象
12.2.2 使用文件映射共享数据
12.2.3 使用剪贴板传输对象
12.2.4 使用匿名管道传输对象
12.2.5 使用命名管道传输对象
12.2.6 使用邮槽传输对象
12.3 本章小结
第13章 线程间对象的传输与调用
13.1 线程的操作
13.1.1 关于线程操作的CRT函数
13.1.2 关于线程操作的Windows API
13.2 MFC对线程操作的封装
13.2.1 工作者线程
13.2.2 带界面的工作者线程
13.2.3 界面线程
13.3 线程通信
13.3.1 利用全局对象进行通信
13.3.2 利用入口参数进行通信
13.3.3 利用Windows消息进行通信
13.4 线程同步
13.4.1 编写安全的售票程序
13.4.2 同步对象CSyncObject
13.4.3 利用临界区(Critical Section)实现同步
13.4.4 利用互斥体(Mutex)实现同步
13.4.5 利用信号量(Semaphore)实现同步
13.4.6 利用事件(Event)实现同步
13.4.7 CMultiLock 和
CSingleLock
13.5 本章小结
第14章 模块间对象的传输与调用
14.1 静态库与动态链接库
14.1.1 将mcd包装成mcd.lib
14.1.2 将mcd包装成mcd.dll
14.1.3 mcd.dll的调用
14.1.4 显式调用与隐式调用
14.1.5 将类封装成DLL
14.2 ActiveX控件
14.2.1 将mcd包装成mcd.ocx
14.2.2 为mcd.ocx添加SetNumbers方法
14.2.3 为mcd.ocx添加Direction属性
14.2.4 在HTML中测试McdOcx控件
14.3 COM
14.3.1 一个不是COM的C++接口
14.3.2 一个貌似COM的DLL
14.3.3 真假COM
14.3.4 使用ATL设计COM组件
14.3.5 在JavaScript中测试COM组件
14.3.6 使用COM API调用COM组件
14.3.7 使用#import方式调用COM组件
14.4 本章小结
第15章 网络间对象的传输与调用
15.1 使用Socket完成网络通信
15.1.1 如何向网络上发送一个比特?
15.1.2 TCP/IP协议与TCP、UDP
15.1.3 Winsock与Winsock API
15.1.4 用Socket实现C/S模式
15.1.5 使用Winsock打造mcd的网络版
15.2 使用MFC::Csocket完成网络通信
15.2.1 Winsock与CAsyncSocket、CSocket
15.2.2 使用CSocket打造mcd的网络版
15.2.3 使用CSocket打造mcd的UDP版
15.2.4 使用CSocket事件
15.2.5 使用CSocket连接Web站点
15.3 使用WinInet API完成网络通信
15.3.1 WinInet API与WinInet类
15.3.2 使用WinInet API连接mcd的web版
15.3.3 使用MFC::WinInet类连接客栈的Web版
15.4 本章小结
……
序言 又是一本Visual C++图书?
Visual C++领域从来都不乏好书,在图书市场极其丰富的今天,再来撰写一本关于Visual C++的图书是需要足够的胆量和理由的。
相信很多读者都和我一样,书架上早就摆满了各种Visual C++书籍,有关于Visual C++ 5.0版、6.0版的,还有直到当今的2005版、2008版的,Visual C++技术的千头万绪包含其中,如GDI、OLE、ActiveX、COM、XML、ODBC、ADO等。为了学好Visual C++,有些读者可能还有一些关于C++的书籍,OOP、POD、STL、泛型编程、智能指针等术语弥漫其中。此外,Visual C++程序员又常常谈起boost、DirectX、ICE等技术,它们和Visual C++家族之间又是如何沾亲带故的呢?
除了术语灾难之外,我们再来看看来自不胜枚举的项目案例的风暴。除了一些大部头的语法书之外,Visual C++程序员还会发现越来越多的好书,这些书不无详尽地枚举出各种案例,适合应用于专业领域,如图像处理、视频处理、串口通信等。更有甚者,赫然一下子摆出百八十个生猛鲜活的项目实例(编程百例等),指导Visual C++程序员这样做、那样做。这样的例子越多,刚刚入门的程序员就会越困惑,明白在做什么,但并不知道为什么要这么做。当遇到一个新的项目的时候,我们还是会晕头转向,不知从何下手。
越来越多的人在踏入Visual C++大门之后,开始左右彷徨,谁能引我真正入门?谁能拨去我程序员大军眼前的层层迷雾?Visual C++,神乎?魔乎?
是该到了为Visual C++开发技术做个盘点的时候了!尽管显得有点自不量力,但我还是想做个尝试,撰写此稿,和大家一起努力去理一理Visual C++开发技术的细枝末节(套用范伟在《卖车》小品中的话就是“有点乱,有点乱,我们得捋一捋,捋一捋”),并将多年开发的感触和盘托出,以飨读者。
把住Visual C++编程脉络!
这本书与中医没有任何关系,Visual C++尽管毛病不少,但这本书并不是来讨论如何治病救人的。书名中的“把脉”,表达了我们的一种美好愿望,希望通过本书的讨论,帮助读者在实战项目之前,不再犯晕,能够火眼金睛,一下子把住Visual C++编程技术的奇经八脉。
任何一本大部头的书都会在其大纲中详细列出Visual C++的开发技术,但是很少有书将这些开发技术做过分类,指出各种技术的渊源所在,行文上也是照本宣科,将诸多知识点散得七零八落。结果读书的人也只好跟着来个“难得糊涂”,好不容易将书“啃”完了,如释重负之余却发现仍然是寸步难行。Visual C++的技术盘根错节,每一门技术会有更多、更细的实现方式,那能否有一张详尽的脉络图来理顺Visual C++的脉络呢?还有,这些主脉技术与当今流行的软件分层模式之间又是个什么关系?冲突乎?重合乎?我们该如何把握?
本书中我们妄以蚍蜉撼树,将这些技术问题一一给出答案,并给出了一张详细的技术脉络图(见彩页)。希望读者朋友们不嫌粗糙,仔细审阅。
文摘 插图:


可以看出,自动化重构工具的出现使设计的更改变得越来越容易,因此在最初设计系统时,我们只需勾勒出软件很粗的线条,只需让设计满足当前的需求,待日后需求改变时,再扩展我们的设计,从而避免在细枝末节方面的过度设计。
可以说,负责任的程序员应该经常考虑对不合适的代码进行重构,如果程序员在当前的设计中察觉出坏代码的问题,应该立刻改变其设计以使代码更加清晰,更可维护。
前面我们的例子重在讲解代码级的重构。实际上,重构可以用在代码的设计中,也可以用在软件的体系架构中。接下来的一节中,我们将继续探讨软件架构重构及软件分层的理念。
1.3 软件架构及软件分层
软件架构(Sof-tWareArchitecture)是最近比较流行的话题,它类似于系统的一个草图,用以描述构成系统的各个组件及它们之间的通信关系。下面我们讨论一下进行软件架构的原则及常见的架构模式。
1.3.1 软件架构的原则
软件架构随着技术的革新不断地更新其内容,当然有一些基本原则可以用来指导软件的架构。这些原则基本上都是外国人发明的,比较知名、实用的列举一二如下。
1.模块化原则
简言之,模块化就是让软件分工,同样的一件事分成几块来做,这样可以提高软件模块的复用性,并有效保障每一个模块的稳定性。
2.接口实现分离原则
随着软件的复杂度日趋增高,采取“面向接口编程”而非“面向实现编程”,可以增加软件模块之间的耦合度,从而让各模块能够自由改进。
热点排行