| 作 者: | George Shepherd David Kruglinski 潘爱民 |
| 出版社: | 清华大学出版社 |
| 丛编项: | 微软 NET程序员系列 |
| 版权说明: | 本书为公共版权或经版权方授权,请支持正版图书 |
| 标 签: | VC++.NET |
| ISBN | 出版时间 | 包装 | 开本 | 页数 | 字数 |
|---|---|---|---|---|---|
| 未知 | 暂无 | 暂无 | 未知 | 0 | 暂无 |
第Ⅰ部分 Windows、Visual C++ .NET和应用 程序框架基础
第1章 Windows和Visual C++ .NET
1.1 Windows编程模型
1.1.1 消息处理
1.1.2 Windows的图形设备接口(GDI)
1.1.3 基于资源的程序设计
1.1.4 内存管理
1.1.5 动态连接库(DLL)
1.1.6 Win32应用程序编程接口
1.2 Visual C++ .NET的组成
1.2.1 Visual C++ .NET和创建过程
1.2.2 资源视图窗口和资源编辑器
1.2.3 C/C++编译器
1.2.4 源代码编辑器
1.2.5 资源编译器
1.2.6 连接器
1.2.7 调试器
1.2.8 MFC Application Wizard
1.2.9 Class View
1.2.10 方案管理器
1.2.11 对象浏览器
1.2.12 UML工具
1.2.13 联机帮助
1.2.14 Windows诊断工具
1.2.15 MFC库版本7
1.2.16 ATL库版本7.0
1.2.17 .NET支持
第2章 Microsoft基本类库应用程序框架
2.1 为什么要使用应用程序框架?
2.1.1 学习曲线
2.2 什么是应用程序框架?
2.2.1 应用程序框架和类库
2.2.2 应用程序框架示例
2.3 MFC库消息映射
2.4 文档和视图
第Ⅱ部分 MFC基础
第3章 从MFC Application Wizard开始学习
3.1 什么是视图
3.2 MFC库应用程序的类型
3.3 MFC库支持的用户界面
3.4 Ex03a:“不做任何事情”的应用程序
3.5 CEx03aView视图类
3.6 在视图窗口内绘图:Windows GDI
3.6.1 OnDraw成员函数
3.6.2 Windows设备环境
3.6.3 往Ex03a程序中添加绘制代码
3.7 资源编辑器简介
3.7.1 Ex03a.rc的内容
3.7.2 运行对话框资源编辑器
3.8 Win32 Debug目标和Win32 Release目标
3.9 对预编译头文件的理解
3.10 两种方法运行程序
第4章 Visual C++ .NET向导
4.1 向导的类型
4.2 向导是如何工作的
4.3 创建一个向导
4.4 创建一个“用托管C++来开发Web应用”的向导
第5章 Windows消息映射
5.1 获取用户输入——消息映射函数
5.1.1 消息映射
5.1.2 保存视图的状态:类的数据成员
5.1.3 初始化视图类数据成员
5.1.4 使矩形区域无效的理论
5.1.5 Windows的客户区域
5.1.6 判断一个点是否在矩形内
5.1.7 判断一个点是否在椭圆内
5.1.8 Ex05a示例程序
5.1.9 对Ex05a使用Class View
5.2 使用Windows映射模式
5.2.1 MM_TEXT映射模式
5.2.2 “固定比例”映射模式
5.2.3 “可变比例”映射模式
5.2.4 坐标转换
5.2.5 Ex05b示例程序——转换到MM_HIMETRIC映射模式
5.3 创建一个滚动视图窗口
5.3.1 窗口比您所见到的要大
5.3.2 滚动条
5.3.3 滚动方式的选择
5.3.4 OnInitialUpdate函数
5.3.5 接收键盘输入
5.3.6 Ex05c示例程序:滚动
5.4 使用其他Windows消息
5.4.1 WM_CREATE消息
5.4.2 WM_CLOSE消息
5.4.3 WM_QUERYENDSESSION消息
5.4.4 WM_DESTROY消息
5.4.5 WM_NCDESTROY消息
第6章 经典的GDI函数、字体和位图
6.1 设备环境类
6.1.1 显示设备环境类CClientDC和CWindowDC
6.1.2 构造和析构CDC对象
6.1.3 设备环境的状态
6.1.4 CPaintDC类
6.2 GDI对象
6.2.1 GDI对象的构造与析构
6.2.2 跟踪GDI对象
6.2.3 库存的GDI对象
6.2.4 GDI选择的有效期
6.3 字体
6.3.1 字体是GDI对象
6.3.2 选择字体
6.3.3 打印字体
6.3.4 显示字体
6.3.5 显示器的逻辑英寸和物理英寸
6.3.6 计算字符高度
6.4 Ex06a示例程序
6.4.1 Ex06a程序的组成元素
6.5 Ex06b示例程序
6.5.1 Ex06b程序的组成元素
6.6 Ex06c示例程序——再次使用CScrollView
6.6.1 Ex06c程序的组成元素
6.6.2 CScrollView的SetScaleToFitSize模式
6.6.3 在滚动视图中使用逻辑twips映射模式
6.7 位图
6.7.1 GDI位图和与设备无关的位图
6.7.2 彩色位图和单色位图
6.8 DIB和CDib类
6.8.1 关于调色板编程的术语
6.8.2 DIB、像素和颜色表
6.8.3 BMP文件中DIB的结构
6.8.4 DIB访问函数
6.8.5 CDib类
6.8.6 DIB显示性能
6.8.7 Ex06d示例程序
6.9 进一步使用DIB
6.9.1 LoadImage函数
6.9.2 DrawDibDraw函数
6.10 在按钮上放置位图
6.10.1 Ex06e示例程序
6.10.2 进一步使用位图按钮
第7章 对话框
7.1 模式和无模式对话框
7.2 资源和控件
7.3 模式对话框的编程
7.4 包罗万象的对话框——Ex07a示例程序
7.4.1 创建对话框资源
7.4.2 创建对话框类
7.4.3 将对话框与视图相连接
7.4.4 深入理解Ex07a应用程序
7.5 Ex07a应用程序的改进
7.5.1 控制OnOK退出过程
7.5.2 OnCancel处理
7.5.3 和滚动条控件挂上钩
7.6 控件的标识:CWnd指针和控件ID
7.7 设置对话框的背景色和其中控件的颜色
7.8 在运行时加入对话框控件
7.9 利用其他的控件特性
7.10 Windows通用对话框
7.10.1 直接使用CFileDialog类
7.10.2 从通用对话框类进行派生
7.10.3 嵌套对话框
7.10.4 Ex07b示例程序:CFileDialog
7.10.5 CFileDialog的其他可定制特性
7.11 无模式对话框的编程
7.11.1 创建无模式对话框
7.11.2 用户定义的消息
7.11.3 对话框的所有关系(Ownership)
7.11.4 Ex07c示例程序:无模式对话框
第8章 通用控件
8.1 标准通用控件
8.1.1 进度指示器控件(Progress Control)
8.1.2 滑块控件(Slider Control)
8.1.3 微调控件(Spin Control)
8.1.4 列表控件
8.1.5 树状控件
8.1.6 WM_NOTIFY消息
8.2 Ex08a示例程序:标准通用控件
8.3 高级通用控件
8.3.1 日期时间选择器
8.3.2 月历控件
8.3.3 IP地址控件
8.3.4 扩展的组合框控件
8.4 Ex08b示例程序:高级通用控件
第9章 使用ActiveX控件
9.1 ActiveX控件和普通的Windows控件
9.1.1 普通的Windows控件:一个参考框架
9.1.2 ActiveX控件与普通控件的相同点
9.1.3 ActiveX控件与普通控件的不同点:属性和方法
9.2 安装ActiveX控件
9.3 日 历 控 件
9.4 ActiveX控件包容器编程
9.4.1 属性访问
9.4.2 Visual Studio .NET为ActiveX控件产生的C++包装类
9.4.3 MFC Application Wizard对ActiveX控件的支持
9.4.4 Add Class Wizard和包容器对话框
9.4.5 把ActiveX控件锁定在内存里
9.5 Ex09a示例程序:ActiveX控件对话框包容器
9.6 ActiveX控件在HTML文件中的使用
9.7 在运行时创建ActiveX控件
9.8 Ex09b示例程序:Web浏览器ActiveX控件
9.9 图 形 属 性
9.10 可绑定的属性:变化通知
第10章 Win32核心内存管理
10.1 进程和内存空间
10.1.1 Windows 95/98进程地址空间
10.1.2 Windows NT/2000/XP的进程地址空间
10.2 虚拟内存如何工作
10.3 VirtualAlloc函数——占用和保留内存
10.4 Windows堆和GlobalAlloc函数族
10.5 小内存堆,C++的new和delete操作符,_heapmin
10.6 内存映射文件
10.7 访 问 资 源
10.8 管理动态内存的一些提示
10.9 常量数据的优化存储
第11章 Windows消息处理和多线程编程
11.1 Windows消息处理
11.1.1 单线程程序处理消息的过程
11.1.2 交出控制
11.1.3 计时器
11.1.4 Ex11a示例程序
11.2 空状态处理
11.3 多线程编程
11.3.1 编写辅助线程函数和启动线程
11.3.2 主线程如何与辅助线程通话
11.3.3 辅助线程如何与主线程通话
11.3.4 Ex11b示例程序
11.3.5 用事件使线程同步
11.3.6 Ex11c示例程序
11.3.7 线程阻塞
11.3.8 临界区
11.3.9 互斥体(mutex)和信号(semaphore)
11.3.10 用户界面线程(UI线程)
第Ⅲ部分 MFC的文档-视图结构
第12章 菜单、键盘加速键、复文本编辑控件和属性表
12.1 主框架窗口和文档类
12.2 Windows菜单
12.3 键盘加速键
12.4 命 令 处 理
12.4.1 派生类中的命令消息控制
12.4.2 更新命令用户界面消息控制函数
12.4.4 对话框发送的命令
12.5 应用程序框架的内置菜单命令
12.5.1 菜单命令的允许/禁用
12.6 MFC文本编辑选择
12.6.1 CEditView类
12.6.2 CRichEditView类
12.6.3 CRichEditCtrl类
12.7 Ex12a示例程序
12.8 属 性 表
12.8.1 创建属性表
12.8.2 属性表数据交换
12.9 改进Ex12a示例程序
12.9.1 Apply按钮的处理过程
12.10 CMenu类
12.11 创建浮动的快捷菜单
12.12 扩展的命令处理
第13章 工具栏和状态栏
13.1 控制栏和应用程序框架
13.2 工 具 栏
13.2.1 工具栏位图
13.2.2 工具栏按钮的状态
13.2.3 工具栏和命令消息
13.2.4 工具栏更新命令UI消息控制函数
13.3 工 具 提 示
13.4 获得主框架窗口
13.5 Ex13a示例程序:使用工具栏
13.6 状 态 栏
13.6.1 状态栏的定义
13.6.2 信息行
13.6.3 状态指示器
13.6.4 对状态栏的控制
13.7 Ex13b示例程序:使用状态栏
13.8 Rebar
13.8.1 解剖一个rebar
13.9 Ex13c示例程序:使用rebar
第14章 可重用的框架窗口基类
14.1 为什么可重用基类难以设计
14.2 CPersistentFrame类
14.3 CFrameWnd::ActivateFrame成员函数
14.4 PreCreateWindow成员函数
14.5 Windows注册表
14.6 使用CString类
14.7 最大化窗口的位置
14.8 控制栏状态和注册表
14.9 静态数据成员
14.10 默认窗口矩形
14.11 Ex14a示例程序:使用持续框架窗口类
14.12 MDI应用程序中的持续框架
第15章 文档与视图的分离
15.1 文档-视图之间的相互作用函数
15.1.1 CView∷GetDocument函数
15.1.2 CDocument∷UpdateAllViews函数
15.1.3 CView∷OnUpdate函数
15.1.4 CView∷OnInitialUpdate函数
15.1.5 CDocument∷OnNewDocument函数
15.2 最简单的文档-视图应用程序
15.3 CFormView类
15.4 CObject 类
15.5 诊断信息转储
15.5.1 TRACE宏
15.5.2 afxDump对象
15.5.3 信息转储环境及CObject类
15.5.4 未被删除对象的自动信息转储
15.6 Ex15a示例程序:简单的文档-视图交互
15.7 更加高级的文档-视图交互
15.8 CDocument∷DeleteContents函数
15.9 CObList集合类
15.9.1 对先入先出列表使用CObList类
15.9.2 在CObList中进行迭代——POSITION变量
15.9.3 CTypedPtrList模板集合类
15.9.4 信息转储环境及集合类
15.10 Ex15b示例程序:一个多视图SDI应用程序
15.10.1 资源要求
15.10.2 代码要求
15.10.3 保护类型的虚函数
15.10.4 测试Ex15b应用程序
15.11 留给读者的两个练习
第16章 读和写文档
16.1 什么是序列化
16.1.1 磁盘文件和归档 (Archives)
16.1.2 使一个类可序列化
16.1.3 编写Serialize函数
16.1.4 从归档中载入:内嵌对象和指针
16.1.5 使集合序列化
16.1.6 Serialize函数和应用程序框架
16.2 SDI应用程序
16.2.1 Windows应用程序对象
16.2.2 文档模板类
16.2.3 文档模板资源
16.2.4 SDI文档的多视图
16.2.5 创建空文档:CWinApp∷OnFileNew函数
16.2.6 文档类的OnNewDocument函数
16.2.7 连接File Open与序列化代码:OnFileOpen函数
16.2.8 文档类的DeleteContents函数
16.2.9 将File Save和File Save As与序列化代码相连接
16.2.10 文档的“脏”标志
16.3 Ex16a示例程序:支持序列化的SDI程序
16.3.1 CStudent
16.3.2 CEx16aApp
16.3.3 CMainFrame
16.3.4 CEx16aDoc类
16.3.5 CEx16aView类
16.3.6 测试Ex16a应用程序
16.4 从Windows资源管理器启动及拖放
16.4.1 程序注册
16.4.2 在文档上双击鼠标
16.4.3 允许拖放
16.4.4 程序启动参数
16.4.5 试验用Windows资源管理器启动程序及拖放
16.5 MDI支持
16.5.1 一个典型的具有MFC风格的MDI应用程序
16.5.2 MDI应用程序对象
16.5.3 MDI文档模板类
16.5.4 MDI框架窗口和MDI子窗口
16.5.5 主框架和文档模板资源
16.5.6 创建空文档
16.5.7 为已有的文档创建新的视图
16.5.8 载入和存储文档
16.5.9 多文档模板
16.5.10 从Windows资源管理器启动及拖放
16.6 Ex16b示例程序:MDI应用程序
16.6.1 CEx16bApp
16.6.2 CMainFrame
16.6.3 CChildFrame
16.6.4 测试Ex16b应用程序
16.7 MTI支持
16.8 Ex16c示例程序:MTI应用程序
16.8.1 测试Ex16c应用程序
第17章 打印和打印预览
17.1 基于Windows的打印
17.1.1 标准打印对话框
17.1.2 交互选择打印页码
17.1.3 显示页和打印页
17.2 打 印 预 览
17.3 打印机的程序设计
17.3.1 打印机设备环境和CView::OnDraw函数
17.3.2 CView::OnPrint函数
17.3.3 准备设备环境:CView::OnPrepareDC函数
17.3.4 打印任务的开始和结束
17.4 Ex17a示例程序:一个所见即所得的打印程序
17.4.1 读取打印机矩形框
17.5 再看模板集合类:CArray类
17.6 Ex17b示例程序:多页打印程序
第18章 切分窗口和多视图
18.1 切 分 窗 口
18.2 关于视图的选择
18.3 动态和静态切分窗口
18.4 Ex18a示例程序:具有单个视图类的SDI动态切分
18.4.1 与切分有关的资源
18.4.2 CMainFrame
18.4.3 测试Ex18a应用程序
18.5 Ex18b示例程序:双视图类SDI静态切分
18.5.1 CHexView
18.5.2 CMainFrame
18.5.3 测试Ex18b应用程序
18.6 Ex18c示例程序:切换视图类但不用切分窗口
18.6.1 资源要求
18.6.2 CMainFrame
18.6.3 测试Ex18c应用程序
18.7 Ex18d示例程序:多视图类MDI应用程序
18.7.1 资源要求
18.7.2 CEx18dApp
18.7.3 CMainFrame
18.7.4 测试Ex18d应用程序
第19章 上下文相关帮助
19.1 WinHelp和HTML Help
19.2 Windows的WinHelp程序
19.2.1 复文本格式(RTF)
19.2.2 编写简单的帮助文件
19.2.3 改进的目录
19.3 应用程序框架与WinHelp
19.3.1 调用WinHelp
19.3.2 使用搜索字符串
19.3.3 从应用程序的菜单来调用WinHelp
19.3.4 帮助上下文别名
19.3.5 确定帮助上下文
19.3.6 F1帮助
19.3.7 Shift+F1 帮助
19.3.8 消息框帮助:AfxMessageBox函数
19.3.9 一般的帮助
19.4 帮助示例:不需要任何编程
19.5 帮助命令处理
19.5.1 F1处理过程
19.5.2 Shift+F1处理过程
19.6 Ex19b示例程序:帮助命令处理
19.6.1 头文件要求
19.6.2 CStringView
19.6.3 CHexView
19.6.4 资源要求
19.6.5 帮助文件要求
19.6.6 测试Ex19b应用程序
19.7 MFC和HTML Help
19.8 Ex19c示例程序:HTML Help
第20章 动态链接库
20.1 基本DLL理论
20.1.1 导入如何与导出相匹配
20.1.2 隐式链接和显式链接
20.1.3 符号链接和序号链接
20.1.4 DLL入口点:DllMain
20.1.5 实例句柄:装载资源
20.1.6 客户程序如何找到DLL
20.1.7 调试DLL
20.2 MFC DLL:扩展的和常规的
20.2.1 MFC扩展DLL:导出类
20.2.2 MFC扩展DLL的资源搜索序列
20.2.3 Ex20a示例程序:MFC扩展DLL
20.2.4 Ex20b示例程序:DLL测试客户程序
20.2.5 MFC常规DLL:AFX_EXTENSION_MODULE结构
20.2.6 使用AFX_MANAGE_STATE宏
20.2.7 MFC常规DLL的资源搜索序列
20.2.8 Ex20c示例程序:MFC常规DLL
20.2.9 修改Ex20b示例程序:加入代码以测试Ex20c.dll
20.3 自定义控件DLL
20.3.1 什么是自定义控件
20.3.2 自定义控件的窗口类
20.3.3 MFC库和WndProc函数
20.3.4 自定义控件的通知消息
20.3.5 发送给控件的用户定义消息
20.3.6 Ex20d示例程序:自定义控件
20.3.7 再修改Ex20b示例程序:加入代码以测试Ex20d.dll
第21章 不带文档或视图类的MFC程序
21.1 Ex21a示例程序:一个基于对话框的应用程序
21.1.1 应用程序类的InitInstance函数
21.1.2 对话框类和程序图标
21.2 Ex21b示例程序:一个SDI应用程序
21.3 Ex21c示例程序:一个MDI应用程序
第四部分 COM、自动化、ActiveX和OLE
第22章 组件对象模型
22.1 ActiveX技术
22.2 什么是COM
22.3 Ex22a示例程序:一个模拟的COM
22.4 MFC库中实际的COM
22.5 Ex22b示例程序:MFC COM进程内组件
22.6 Ex22c示例程序:MFC COM客户
22.7 包容、聚合和继承
第23章 自动化
23.1 为VBA创建C++组件
23.2 自动化客户和自动化组件
23.3自动化接口
23.4 自动化程序设计的选择
23.5 一个MFC自动化组件
23.6 一个MFC自动化客户程序
23.7 使用了编译器的#import指令的自动化客户程序
23.8 VARIANT类型
23.9 COleVariant类
23.10自动化示例
23.11 VBA早绑定
第24章 统一数据传输:剪贴板传输以及OLE拖放
24.1 IDataObject接口
24.2 FORMATETC和STGMEDIUM结构
24.3 MFC对UDT的支持
24.4 MFC CRectTracker类
24.5 Ex24a示例程序:数据对象剪贴板
24.6 MFC的拖放
24.7 Ex24b示例程序:OLE拖放
第25章 活动模板库介绍
25.1再谈COM
25.2 编写COM代码
25.3 COM基础设施
25.4 ATL简介
25.5 客户端ATL程序设计
25.6 服务器端ATL程序设计
25.7 属性化程序设计
第26章 ATL和ActiveX控件
26.1 什么是ActiveX控件
26.2 用ATL编写ActiveX控件
26.3 创建一个属性化的控件
第27章 OLE DB模板
27.1 为什么使用OLE DB
27.2 OLE DB的基本结构
27.3 OLE DB模板的基本结构
27.4 创建一个OLE DB使用者
27.5 创建一个OLE DB提供者
27.6 属性化的OLE DB程序设计
第五部分 Internet程序设计
第28章 Internet基础
28.1 Internet入门
28.2 建立一个Intranet
28.3 Winsock程序设计
28.4 用CHttpBlockingSocket建立一个Web服务器
28.5 用CHttpBlockingSocket建立一个Web客户
28.6 WinInet
28.7 用MFC WinInet类建立一个Web客户
28.8 异步Moniker文件
第29章 动态HTML简介
29.1 DHTML对象模型
29.2 Visual C++ .NET和DHTML
29.3 Ex29a示例程序:MFC和DHTML
29.3 Ex29b示例程序:DHTML和MFC
29.4 Ex29c示例程序:ATL和DHTML
29.5 进一步的信息
第30章 ATL Server
30.1 IIS
30.2 ISAPI服务器扩展
30.3 ATL Server简介
30.4 Ex30a示例程序:一个ATL Server Web站点
第六部分 .NET和远景
第31章 Microsoft .NET
31.1 Windows组件技术
31.2 公共语言运行时库
第32章 托管C++
32.1 公共语言运行时库与C++开发人员
32.2 为什么使用C++
32.3 托管的C++扩展
32.4 Visual C++ .NET和托管扩展
32.5 Ex32a示例程序:一个托管C++ DLL程序集
32.6程序集的用法
32.7 Ex32b示例程序:一个托管的客户可执行程序
32.8 加入托管扩展支持
第33章 用托管C++进行Windows Forms编程
33.1 Windows Forms
33.2 Windows Forms的不足
第34章 用托管C++进行ASP.NET编程
34.1 Internet作为开发平台
34.2 ASP.NET的演变
34.3 IIS的作用
34.4 ASP.NET的编译模型
34.5 Page类
34.6 HTTP传递路径
34.7 Web服务
第35章 用托管C++进行ADO.NET编程
35.1 托管的提供者
35.2 使用托管提供者
35.3 ADO.NET数据集
附录A MFC库中的消息映射函数
附录B MFC库运行时类识别和动态对象创建
B.1 运行时获取对象的类名
B.2 MFC CRuntimeClass结构和RUNTIME_CLASS宏
B.3 动态创建
B.4 示例程序