DLL中添加对话框, 并被外部程序调用显示

1.VS 解决方案的创建

在这里插入图片描述
在这里插入图片描述
完成创建。
在这里插入图片描述

2.动态链接库(DLL)项目创建

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
完成dll项目,此时解决方案下有两个工程项目DLL_Dlg_Test 和 DLL_Dlg_Test_dll
在这里插入图片描述

3.在动态链接库项目中添加对话框及其对应的类

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
此时在DLL_Dlg_Test_dll项目下,增加了LibDllDlgTest.h 和 LibDllDlgTest.cpp两个对话框对应的类文件.

在这里插入图片描述

4.在dll项目中其它类文件(如CShowDlg.cpp)中,创建对话框显示函数

首先新建CShowDlg类,生成CShowDlg.cpp和CShowDlg.h文件,用于创建对话框类对象,并显示对话框

(1)包含LibDllDlgRest对话框类的头文件LibDllDlgRest.h
(2)定义类对象并显示

void CShowDlg::ShowDlg()
{
    AFX_MANAGE_STATE(AfxGetStaticModuleState());  // 对话框能正常显示的关键语句
    LibDllDlgRest Obj;
    Obj.DoModal();
}

在这里插入图片描述

5.导出类,并被外部函数使用,显示dll中的对话框

(1)dll项目属性配置添加_LIB_EXPORT宏(宏名称任意)
在这里插入图片描述
(2)声明类导出

#ifdef _LIB_EXPORTS
#define LIB_API __declspec(dllexport)
#else
#define LIB_API __declspec(dllimport)
#endif // LIB_API
class LIB_API CShowDlg; //声明类导出
class CShowDlg
{
public:
    CShowDlg();
    ~CShowDlg();
public:
    void ShowDlg();
};

在这里插入图片描述
(3)编译生成.dll文件
在这里插入图片描述
(4)外部使用导出类
①在外部项目的对话框类中加载头文件和库链接

#include "../DLL_Dlg_Test_dll/CShowDlg.h"
#pragma comment(lib, "../Debug/DLL_Dlg_Test_dll.lib")    

在这里插入图片描述
②对外部项目对话框的确定按钮添加点击事件
在这里插入图片描述
③添加对话框显示程序

void DLL_Test_Dlg::OnBnClickedOk()
{
    // TODO: 在此添加控件通知处理程序代码
    CShowDlg Obj;
    Obj.ShowDlg();
    CDialog::OnOK();
}

在这里插入图片描述
(4)执行程序 弹出 外部对话框 → “确定” → 弹出“DLL对话框”,实现了DLL对话框的调用

在这里插入图片描述

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
写在前面的话 引言 1. 前提 2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体 8. 源代码 9. 编码样式 10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 14. 致谢 第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 实现方案的隐藏 1.4 方案的重复使用 1.5 继承:重新使用接口 1.5.1 改善基础类 1.5.2 等价和类似关系 1.6 多形对象的互换使用 1.6.1 动态绑定 1.6.2 抽象的基础类和接口 1.7 对象的创建和存在时间 1.7.1 集合与继承器 1.7.2 单根结构 1.7.3 集合库与方便使用集合 1.7.4 清除时的困境:由谁负责清除? 1.8 违例控制:解决错误 1.9 多线程 1.10 永久性 1.11 Java和因特网 1.11.1 什么是Web? 1.11.2 客户端编程 1.11.3 服务器端编程 1.11.4 一个独立的领域:应用程序 1.12 分析和设计 1.12.1 不要迷失 1.12.2 阶段0:拟出一个计划 1.12.3 阶段1:要制作什么? 1.12.4 阶段2:开始构建? 1.12.5 阶段3:正式创建 1.12.6 阶段4:校订 1.12.7 计划的回报 1.13 Java还是C++? 第2章 一切都是对象 2.1 用句柄操纵对象 2.2 必须创建所有对象 2.2.1 保存在什么地方 2.2.2 特殊情况:主类型 2.2.3 Java的数组 2.3 绝对不要清除对象 2.3.1 作用域 2.3.2 对象的作用域 2.4 新建数据类型:类 2.4.1 字段和方法 2.5 方法、自变量和返回值 2.5.1 自变量列表 2.6 构建Java程序 2.6.1 名字的可见性 2.6.2 使用其他组件 2.6.3 static关键字 2.7 我们的第一个Java程序 2.8 注释和嵌入文档 2.8.1 注释文档 2.8.2 具体语法 2.8.3 嵌入 2.8.4 @see:引用其他类 2.8.5 类文档标记 2.8.6 变量文档标记 2.8.7 方法文档标记 2.8.8 文档示例 2.9 编码样式 2.10 总结 2.11 练习 第3章 控制程序流程 3.1 使用Java运算符 3.1.1 优先级 3.1.2 赋值 3.1.3 算术运算符 3.1.4 自动递增和递减 3.1.5 关系运算符 3.1.6 逻辑运算符 3.1.7 按位运算符 3.1.8 移位运算符 3.1.9 三元if-else运算符 3.1.10 逗号运算符 3.1.11 字串运算符 3.1.12 运算符常规操作规则 3.1.13 造型运算符 3.1.14 Java没有“sizeof” 3.1.15 复习计算顺序 3.1.16 运算符总结 3.2 执行控制 3.2.1 真和假 3.2.3 反复 3.2.6 断和继续 3.2.7 切换 3.3 总结 3.4 练习 第4章 初始化和清除 4.1 由构建器保证初始化 4.2 方法过载 4.2.1 区分过载方法 4.2.2 主类型的过载 4.2.3 返回值过载 4.2.4 默认构建器 4.2.5 this关键字 4.3 清除:收尾和垃圾收集 4.3.1 finalize()用途何在 4.3.2 必须执行清除 4.4 成员初始化 4.4.1 规定初始化 4.4.2 构建器初始化 4.5 数组初始化 4.5.1 多维数组 4.6 总结 4.7 练习 第5章 隐藏实施过程 5.1 包:库单元 5.1.1 创建独一无二的包名 5.1.2 自定义工具库 5.1.3 利用导入改变行为 5.1.4 包的停用 5.2 Java访问指示符 5.2.1 “友好的” 5.2.2 public:接口访问 5.2.3 private:不能接触 5.2.4 protected:“友好的一种” 5.3 接口与实现 5.4 类访问 5.5 总结 5.6 练习 第6章 类再生 6.1 合成的语法 6.2 继承的语法 6.2.1 初始化基础类 6.3 合成与继承的结合 6.3.1 确保正确的清除 6.3.2 名字的隐藏 6.4 到底选择合成还是继承 6.6 递增开发 6.7 上溯造型 6.7.1 何谓“上溯造型”? 6.8 final关键字 6.8.1 final数据 6.8.2 final方法 6.8.3 final类 6.8.4 final的注意事项 6.9 初始化和类装载 6.9.1 继承初始化 6.10 总结 6.11 练习 第7章 多形性 7.1 上溯造型 7.1.1 为什么要上溯造型 7.2 深入理解 7.2.1 方法调用的绑定 7.2.2 产生正确的行为 7.2.3 扩展性 7.3 覆盖与过载 7.4 抽象类和
Visual C++ 2005入门经典.pdf(整理并添加所有书签) ,看书的时候更方便. 封面 目录 第1章 使用Visual C++ 2005 编程 1.1 .NET Framework 1.2 CLR 1.3 编写C++应用程序 1.4 学习windows编程 1.4.1 学习c++ 1.4.2 C++标准 1.4.3 控制台应用程序 1.4.4 Windows编程概念 1.5 集成开发环境简介 1.6 使用IDE 1.6.1 工具栏选项 1.6.2 可停靠的工具栏 1.6.3 文档 1.6.4 项目和解决方案 1.6.5 设置Visual C++2005的选项 1.6.6 创建和执行windows应用程序 1.6.7 创建windows Forms应用程序 1.7 小结 第2章 数据、变量和计算 2.1 C++程序结构 2.1.1 程序注释 2.1.2 #include指令——头文件 2.1.3 命名空间和using声明 2.1.4 main()函数 2.1.5 程序语句 2.1.6 空白 2.1.7 语句块 2.1.8 自动生成的控制台程序 2.2 定义变量 2.2.1 命名变量 2.2.2 C++的关键字 2.2.3 声明变量 2.2.4 变量的初值 2.3 基本数据类型 2.3.1 整型变量 2.3.2 字符数据类型 2.3.3 整型修饰符 2.3.4 布尔类型 2.3.5 浮点类型 2.3.6 ISO/ANSI C++的基本类型 2.3.7 字面值 2.3.8 定义数据类型的同义词 2.3.9 具有特定值集的变量 2.3.10 指定枚举常量的类型 2.4 基本的输入输出操作 2.4.1 从键盘输入 2.4.2 到命令行的输出 2.4.3 格式化输出 2.4.4 转义序列 2.5 C++的计算 2.5.1 赋值语句 2.5.2 算术运算 2.5.3 计算余数 2.5.4 修改变量 2.5.5 增量和减量运算符 2.5.6 计算的顺序 2.6 变量类型和类型强制转换 2.6.1 对操作数进行类型强制转换的规则 2.6.2 赋值语句的类型强制转换 2.6.3 显式类型强制转换 2.6.4 老式的类型强制转换 2.6.5 按位运算符 2.7 了解存储时间和作用域 2.7.1 自动变量 2.7.2 决定变量声明的位置 2.7.3 全局娈量 2.7.4 静态变量 2.8 命名空间 2.8.1 声明命名空间 2.8.2 多个命名空间 2.9 C++/CLI编程 2.9.1 C++/CLI特有的基本数据类型 2.9.2 命令行上的C++/CLI输出 2.9.3 C++/CLI特有的功能——格式化输出 2.9.4 C++/CLI的键盘输入 2.9.5 使用safe cast 2.9.6 C++/CLI枚举 2.10 小结 2.11 练习题 第3章 判断和循环 3.1 比较数据值 3.1.1 if语句 3.1.2 嵌套if语句 3.1.3 扩展的if语句 3.1.4 嵌套的if-else语句 3.1.5 逻辑运算符和表达式 3.1.6 条件运算符 3.1.7 switch语句 3.1.8 无条件转移 3.2 重复执行语句块 3.2.1 循环的概念 3.2.2 for循环的变体 3.2.3 while循环 3.2.4 do-while循环 3.2.5 嵌套的循环 3.3 C++/CLI编程 3.4 小结 3.5 练习 第4章 数组、字符串和指针 4.1 处理多个相同类型的数据值 4.1.1 数组 4.1.2 声明数组 4.1.3 初始化数组 4.1.4 字符数组和字符串处理 4.1.5 多维数组 4.2 间接数据存取 4.2.1 指针的概念 4.2.2 声明指针 4.2.3 使用指针 4.2.4 初始化指针 4.2.5 sizeof运算符 4.2.6 常量指针和指向常量的指针 4.2.7指针和数组 4.3 动态内存分配 4.3.1 堆的别名——自由存储器 4.3.2 new和delete运算符 4.3.3 为数组动态分配内存 4.3.4 多维数组的动态分配 4.4 使用引用 4.4.1 引用的概念 4.4.2 声明并初始化引用 4.5 C++/CLI编程 4.5.1 跟踪句柄 4.5.2 CLR数组 4.5.3 字符串 4.5.4 跟踪引用 4.5.5 内部指针 4.6 小结 4.7 练习 第5章 程序结构(1) 5.1 理解函数 5.1.1 需要函数的原因 5.1.2 函数的结构 5.1.3 使用函数 5.2 给函数传递实参 5.2.1 按值传递机制 5.2.2 给函数传递指针实参 5.2.3 给函数传递数组 5.2.4 给函数传递引用实参 5.2.5 使用const修饰符 5.2.6 main()函数的实参 5.2.7 接受数量不定的函数实参 5.3 从函数返回值 5.3.1 返回指针 5.3.2 返回引用 5.3.3 函数的静态变量 5.4 递归函数调用 5.5 C++/CLI编程 5.5.1 接受数量可变实参的函数 5.5.2 main()的实参 5.6 小结 5.7 练习 第6章 程序结构(2) 6.1 函数指针 6.1.1 声明函数指针 6.1.2 函数指针作为实参 6.1.3 函数指针的数组 6.2 初始化函数形参 6.3 异常 6.3.1 抛出异常 6.3.2 捕获异常 6.3.3 MFC的异常处理 6.4 处理内存分配错误 6.5 函数重载 6.5.1 函数重载的概念 6.5.2 何时重载函数 6.6 函数模板 6.7 使用函数的示例 6.7.1 实现计算器 6.7.2 从字符串删除空格 6.7.3 计算表达式的值 6.7.4 获得项值 6.7.5 分析数 6.7.6 整合程序 6.7.7 扩展程序 6.7.8 提取子字符串 6.7.9 运行修改过的程序 6.8 C++/CLI编程 6.8.1 理解类函数 6.8.2 CLR版本的计算器程序 6.9 小结 6.10 练习 第7章 自定义数据类型 7.1 C++的结构 7.1.1 结构的概念 7.1.2 定义结构 7.1.3 初始化结构 7.1.4 访问结构的成员 7.1.5 伴随结构的智能帮助 7.1.6 RECT结构 7.1.7 使用指针处理结构 7.2 数据类型、对象、类和实例 7.2.1 类的起源 7.2.2 类的操作 7.2.3 术语 7.3 理解类 7.3.1 定义类 7.3.2 声明类的对象 7.3.3 访问类的数据成员 7.3.4 类的成员函数 7.3.5 成员函数定义的位置 7.3.6 内联函数 7.4 类构造函数 7.4.1 构造函数的概念 7.4.2 默认的构造函数 7 4.3 在类定义指定默认的形参值 7.4.4 在构造函数使用初始化列表 7.5 类的私有成员 7.5.1 访问私有类成员 7.5.2 类的友元函数 7.5.3 默认复制构造函数 7.6 this指针 7.7 类的const对象 7.7.1 类的const成员函数 7.7.2 类外部的成员函数定义 7.8 类对象的数组 7.9 类的静态成员 7.9.1 类的静态数据成员 7.9.2 类的静态函数成员 7.10 类对象的指针和引用 7.10.1 类对象的指针 7.10.2 类对象的引用 7.11 C++/CLI编程 7.11.1 定义数值类类型 7.11.2 定义引用类类型 7.11.3 类属性 7.11.4 initonly字段 7.11.5 静态构造函数 7.12 小结 7.13 练习 第8章 深入理解类 8.1 类的析构函数 8.1.1 析构函数的概念 8.1.2 默认的析构函数 8.1.3 析构函数与动态内存分配 8.2 实现复制构造函数 8.3 在变量之间共享内存 8.3.1 定义联台 8.3.2 匿名联合 8.3.3 类和结构的联合 8.4 运算符重载 8.4.1 实现重载的运算符 8.4.2 实现对运算符的完全支持 8.4.3 重载赋值运算符 8.4.4 重载加法运算符 8.4.5 重载递增和递减运算符 8.5 类模板 8.5.1 定义类模板 8.5.2 根据类模板创建对象 8.5.3 使用有多个形参的类模板 8.6 使用类 8.6.1 类接口的概念 8.6.2 定义问题 8.6.3 实现CBox类 8.6.4 定义CBox类 8.6.5 使用CBox类 8.7 组织程序代码 8.8 C++/CLI编程 8.8.1 在数值类重载运算符 8.8.2 重载递增和递减运算符 8.8.3 在引用类重载运算符 8.9 小结 8.1O 练习 第9章 类继承和虚函数 9.1 面向对象编程的基本思想 9.2 类的继承 9.2.1 基类的概念 9.2.2 基类的派生类 9.3 继承机制下的访问控制 9.3.1 派生类构造函数的操作 9.3.2 声明类的保护成员 9.3.3 继承类成员的访问级别 9.4 派生类的复制构造函数 9.5 友元类成员 9.5.1 友元类 9.5.2 对类友元关系的限制 9.6 虚函数 9.6.1 虚函数的概念 9.6.2 使用指向类对象的指针 9.6.3 使用引用处理虚函数 9.6.4 纯虚函数 9.6.5 抽象类 9.6.6 间接基类 9.6.7 虚析构函数 9.7 类类型之间的强制转换 9.8 嵌套类 9.9 C++/CLI编程 9.9.1 C++/CLI类的继承 9.9.2 接口类 9.9.3 定义接口类 9.9.4 类和程序集 9.9.5 被指定为new的函数 9.9.6 委托和事件 9.9.7 引用类的析构函数和结束函数 9.9.8 通用类 9.10 小结 9.11 练习 第10章 调试技术 10.1 理解调试 10.1.1 程序故障 10.1.2 常见故障 10.2 基本的调试操作 10.2.1 设置断点 10.2.2 设置跟踪点 10.2.3 启动调试模式 10.2.4 修改变量的值 10.3 添加调试代码 10.3.1 使用断言 10.3.2 添加自己的调试代码 10.4 调试程序 10.4.1 调用堆栈 10.4.2 单步执行到出错位置 10.5 测试扩展的类 10.6 调试动态内存 10.6.1 检查自由存储器的函数 10.6.2 控制自由存储器的调试操作 10.6.3 自由存储器的调试输出 10.7 调试C++/CLI程序 10.8 小结 第11章 Windows编程的概念 11.1 Windows编程基础 11.1.1窗口的元素 11.1.2 Windows程序与操作系统 11.1.3事件驱动型程序 11.1.4 Windows消息 11.1.5 WindowsAPI 11.1.6.Windows数据类型 11.1.7 Windows程序的符号 11.2 Windows程序的结构 11.2.1 WinMain()函数 11.2.2消息处理函数 11.2.3简单的Windows程序 11.3 Windows程序的组织 11.4 MFC 11.4.1 MFC标记法 11.4.2 MFC程序的组织方式 11.5使用Windows Forms 11.6小结 第12章 使用MFC编写Windows程序 12.1 MFC的文档,视图概念 12.1.1 文档的概念 12.1.2 文档界面 12.1.3 视图的概念 12.1.4 连接文档和视图 12.1.5 应用程序和MFC 12.2 创建MFC应用程序 12.2.1 创建SDI应用程序 12.2.2 MFCApplicationwizard的输出 12.2.3 创建MDI应用程序 12.3 小结 12.4 练习 第13章 处理菜单和工具栏 13.1 与Windows进行通信 13.1.1 了解消息映射 13.1.2 消息类别 13.1.3 处理程序的消息 13.2 扩充Sketcher程序 13.3 菜单的元素 13.4 为菜单消息添加处理程序 13.4.1 选择处理菜单消息的类 13.4.2 创建菜单消息函数 13.4.3 编写菜单消息函数的代码 13.4.4 添加更新用户界面的消息处理程序 13.5 添加工具栏按钮 13.5.1 编辑工具栏按钮的属性 13.5.2 练习使用工具栏按钮 13.5.3 添加工具提示 13.6 小结 13.7 练习题 第14章 在窗口绘图 14.1 窗口绘图的基础知识 14.1.1 窗口客户区 14.1.2 Windows图形设备界面 14.2 Visual C++的绘图机制 14.2.1 应用程序的视图类 14.2.2 CDC类 14.3 实际绘制图形 14.4 对鼠标进行编程 14.4.1 鼠标发出的消息 14.4.2 鼠标消息处理程序 14.4.3 使用鼠标绘图 14.5 练习使用Sketcher程序 14.5.1 运行这个示例 14.5.2 捕获鼠标消息 14.6 小结 14.7 练习题 第15章 创建文档和改进视图 15.1 什么是集合类 15.1.1 集合的类型 15.1.2 类型安全的集合类 15.1.3 对象集合 15.1.4 类型化指针集合 15.2 使用CList模板类 15.2.1 绘制曲线 15.2.2 定义CCurve类 15.2.3 实现CCurve类 15.2.4 练习使用CCurve类 15.3 创建文档 15.4 改进视图 15.4.1 更新多个视图 15.4.2 滚动视图 15.4.3 使用MM_LOENGLISH映射模式 15.5 删除和移动形状 15.6 实现上下文菜单 15.6.1 关联菜单和类 15.6.2 选择上下文菜单 15.6.3 醒目显示元素 15.6.4 处理菜单消息 15.7 处理被屏蔽的元素 15.8 小结 15.9 练习 第16章 使用对话框和控件 16.1 理解对话框 16.2 理解控件 16.3 创建对话框资源 16.4 对话框的编程 16.4.1 添加对话框类 16.4.2 模态和非模态对话框 16.4.3 显示对话框 16.5 支持对话框控件 16.5.1 初始化控件 16.5.2 处理单选按钮消息 16.6 完成对话框的操作 16.6.1 给文档类添加存储线宽的成员 16.6.2 给元素添加线宽 16.6.3 在视图创建元素 16.6.4 练习使用对话框 16.7 使用微调按钮控件 16.7.1 添加Scale菜单项和工具栏按钮 16.7.2 创建微调按钮 16.7.3 生成比例对话框类 16.7.4 显示微调按钮 16.8 使用比例系数 16.8.1 可缩放的映射模式 16.8.2 设置文档的大小 16.8.3 设置映射模式 16.8.4 同时实现滚动与缩放 16.9 使用状态栏 16.10 使用列表框 16.10.1 删除比例对话框 16.1O.2 创建列表框控件 16.11 使用编辑框控件 16.11.1 创建编辑框资源 16.11.2 创建对话框类 16.11.3 添加Text菜单项 16.11.4 定义文本元素 16.11.5 实现CText类 16.11.6 创建文本元素 16.12 小结 16.13 练习 第17章 存储和打印文档 17.1 了解串行化 17.2 串行化文档 17.2.1 文档类定义的串行化 17.2.2 丈档类实现的串行化 17.2.3 基于CObject的类的功能 17.2.4 串行化的工作方式 17.2.5 如何实现类的串行化 17.3 应用串行化 17.3.1 记录文档修改 17.3.2 串行化文档 17.3.3 串行化元素类 17.4 练习串行化 17.5 移动文本 17.6 打印文档 17.7 实现多页打印 17.7.1 获取文档的总尺寸 17.7.2 存储打印数据 17.7.3 准备打印 17.7.4 打印后的清除 17.7.5 准备设备上下文 17.7.6 打印文档 17.7.7 获得文档的打印输出 17.8 小结 17.9 练习题 第18章 编写自己的DLL 18.1 了解DLL 18.1.1 DLL的工作方式 18.1.2 DLL的内容 18.1.3 DLL变体 18.2 决定放入DLL的内容 18.3 编写DLL 18.3.1 编写和使用扩展DLL 18.3.2 从DLL导出变量和函数 18.3.3 将符号导入程序 18.3.4 实现符号从DLL的导出 18.4 小结 18.5 练习题 第19章 连接到数据源 19.1 数据库基础知识 19.2 SQL 19.2.1 使用SQL检索数据 19.2.2 使用SQL连接表 19.2.3 对记录进行排序 19.3 MFC的数据库支持 19.4 创建数据库应用程序 19.4.1 注册ODBC数据库 19.4.2 生成MFC ODBC程序 19.4.3 了解程序结构 19.4.4 示例练习 19.5 对记录集进行排序 19.6 使用另一个记录集对象 19.6.1 添加记录集类 19.6.2 添加记录集的视图类 19.6.3 定制记录集 19.6.4 访问多个表视图 19.6.5 查看产品的订单 19.7 查看客户的详细情况 19.7.1 添加客户记录集 19.7.2 创建客户对话框资源 19.7.3 创建客户视图类 19.7.4 添加过滤器 19.7.5 实现过滤器参数 19.7.6 链接订单对话框和客户对话框 19.7.7 练习使用数据库查看器 19.8 小结 19.9 练习题 第20章 更新数据源 20.1 更新操作 20.1.1 CRecordset更新操作 20.1.2 事务 20.2 简单的更新示例 20.3 管理更新过程 20.4 向表添加行 20.4.1 订单录入过程 20.4.2 创建资源 20.4.3 创建记录集 20.4.4 创建记录集视图 20.4.5 给对话框资源添加控件 20.4.6 实现对话框切换 20.4.7 创建订单ID 20.4.8 存储订单数据 20.4.9 为订单选择产品 20.4.10 添加新订单 20.5 小结 20.6 练习 第21章 使用Windows Forms的应用程序 21.1 理解Wqndows Forms 21.2 理解Windows Forms应用程序 21.2.1 修改窗体的属性 21.2.2 如何启动应用程序 21.3 定制应用程序GUI 21.3.1 给窗体添加控件 21.3.2 添加选项卡控件 21.3.3 使用CroupBox控件 21.3.4 使用Button控件 21.3.5 使用WebBrowser控件 21.3.6 Winning应用程序的操作 21.3.7 添加上下文菜单 21.3.8 创建事件处理程序 21.3.9 处理Limits菜单的事件 21.3.10 创建对话框 21.3.11 使用对话框 21.3.12 添加第二个对话框 21.3.13 实现Help|About菜单项 21.3.14 处理按钮单击事件 21.3.15 响应上下文莱单 21.4 小结 21.5 练习 第22章 在Windows Forms应用程序访问数据源 22.1 使用数据源 22.2 访问并显示数据 22.3 使用DataGridView控件 22.4 在无约束模式使用DataGridView控件 22.5 定制DataGridView控件 22.5.1 定制题头单元格 22.5.2 定制非题头单元格 22.5.3 动态设置单元格样式 22.6 使用约束模式 22.7 BindingSource组件 22.8 使用BindingNavigator控件 22.9 绑定到单独的控件 22.10 使用多个表 22.11 小结 22.12 练习 附录A C++关键字 A1 ISO/ANSI C++关键宇 A2 C++/CLI关键字 附录B ASCII码
Visual C++ 2005入门经典.pdf(整理并添加所有书签) ,看书的时候更方便. 封面 目录 第1章 使用Visual C++ 2005 编程 1.1 .NET Framework 1.2 CLR 1.3 编写C++应用程序 1.4 学习windows编程 1.4.1 学习c++ 1.4.2 C++标准 1.4.3 控制台应用程序 1.4.4 Windows编程概念 1.5 集成开发环境简介 1.6 使用IDE 1.6.1 工具栏选项 1.6.2 可停靠的工具栏 1.6.3 文档 1.6.4 项目和解决方案 1.6.5 设置Visual C++2005的选项 1.6.6 创建和执行windows应用程序 1.6.7 创建windows Forms应用程序 1.7 小结 第2章 数据、变量和计算 2.1 C++程序结构 2.1.1 程序注释 2.1.2 #include指令——头文件 2.1.3 命名空间和using声明 2.1.4 main()函数 2.1.5 程序语句 2.1.6 空白 2.1.7 语句块 2.1.8 自动生成的控制台程序 2.2 定义变量 2.2.1 命名变量 2.2.2 C++的关键字 2.2.3 声明变量 2.2.4 变量的初值 2.3 基本数据类型 2.3.1 整型变量 2.3.2 字符数据类型 2.3.3 整型修饰符 2.3.4 布尔类型 2.3.5 浮点类型 2.3.6 ISO/ANSI C++的基本类型 2.3.7 字面值 2.3.8 定义数据类型的同义词 2.3.9 具有特定值集的变量 2.3.10 指定枚举常量的类型 2.4 基本的输入输出操作 2.4.1 从键盘输入 2.4.2 到命令行的输出 2.4.3 格式化输出 2.4.4 转义序列 2.5 C++的计算 2.5.1 赋值语句 2.5.2 算术运算 2.5.3 计算余数 2.5.4 修改变量 2.5.5 增量和减量运算符 2.5.6 计算的顺序 2.6 变量类型和类型强制转换 2.6.1 对操作数进行类型强制转换的规则 2.6.2 赋值语句的类型强制转换 2.6.3 显式类型强制转换 2.6.4 老式的类型强制转换 2.6.5 按位运算符 2.7 了解存储时间和作用域 2.7.1 自动变量 2.7.2 决定变量声明的位置 2.7.3 全局娈量 2.7.4 静态变量 2.8 命名空间 2.8.1 声明命名空间 2.8.2 多个命名空间 2.9 C++/CLI编程 2.9.1 C++/CLI特有的基本数据类型 2.9.2 命令行上的C++/CLI输出 2.9.3 C++/CLI特有的功能——格式化输出 2.9.4 C++/CLI的键盘输入 2.9.5 使用safe cast 2.9.6 C++/CLI枚举 2.10 小结 2.11 练习题 第3章 判断和循环 3.1 比较数据值 3.1.1 if语句 3.1.2 嵌套if语句 3.1.3 扩展的if语句 3.1.4 嵌套的if-else语句 3.1.5 逻辑运算符和表达式 3.1.6 条件运算符 3.1.7 switch语句 3.1.8 无条件转移 3.2 重复执行语句块 3.2.1 循环的概念 3.2.2 for循环的变体 3.2.3 while循环 3.2.4 do-while循环 3.2.5 嵌套的循环 3.3 C++/CLI编程 3.4 小结 3.5 练习 第4章 数组、字符串和指针 4.1 处理多个相同类型的数据值 4.1.1 数组 4.1.2 声明数组 4.1.3 初始化数组 4.1.4 字符数组和字符串处理 4.1.5 多维数组 4.2 间接数据存取 4.2.1 指针的概念 4.2.2 声明指针 4.2.3 使用指针 4.2.4 初始化指针 4.2.5 sizeof运算符 4.2.6 常量指针和指向常量的指针 4.2.7指针和数组 4.3 动态内存分配 4.3.1 堆的别名——自由存储器 4.3.2 new和delete运算符 4.3.3 为数组动态分配内存 4.3.4 多维数组的动态分配 4.4 使用引用 4.4.1 引用的概念 4.4.2 声明并初始化引用 4.5 C++/CLI编程 4.5.1 跟踪句柄 4.5.2 CLR数组 4.5.3 字符串 4.5.4 跟踪引用 4.5.5 内部指针 4.6 小结 4.7 练习 第5章 程序结构(1) 5.1 理解函数 5.1.1 需要函数的原因 5.1.2 函数的结构 5.1.3 使用函数 5.2 给函数传递实参 5.2.1 按值传递机制 5.2.2 给函数传递指针实参 5.2.3 给函数传递数组 5.2.4 给函数传递引用实参 5.2.5 使用const修饰符 5.2.6 main()函数的实参 5.2.7 接受数量不定的函数实参 5.3 从函数返回值 5.3.1 返回指针 5.3.2 返回引用 5.3.3 函数的静态变量 5.4 递归函数调用 5.5 C++/CLI编程 5.5.1 接受数量可变实参的函数 5.5.2 main()的实参 5.6 小结 5.7 练习 第6章 程序结构(2) 6.1 函数指针 6.1.1 声明函数指针 6.1.2 函数指针作为实参 6.1.3 函数指针的数组 6.2 初始化函数形参 6.3 异常 6.3.1 抛出异常 6.3.2 捕获异常 6.3.3 MFC的异常处理 6.4 处理内存分配错误 6.5 函数重载 6.5.1 函数重载的概念 6.5.2 何时重载函数 6.6 函数模板 6.7 使用函数的示例 6.7.1 实现计算器 6.7.2 从字符串删除空格 6.7.3 计算表达式的值 6.7.4 获得项值 6.7.5 分析数 6.7.6 整合程序 6.7.7 扩展程序 6.7.8 提取子字符串 6.7.9 运行修改过的程序 6.8 C++/CLI编程 6.8.1 理解类函数 6.8.2 CLR版本的计算器程序 6.9 小结 6.10 练习 第7章 自定义数据类型 7.1 C++的结构 7.1.1 结构的概念 7.1.2 定义结构 7.1.3 初始化结构 7.1.4 访问结构的成员 7.1.5 伴随结构的智能帮助 7.1.6 RECT结构 7.1.7 使用指针处理结构 7.2 数据类型、对象、类和实例 7.2.1 类的起源 7.2.2 类的操作 7.2.3 术语 7.3 理解类 7.3.1 定义类 7.3.2 声明类的对象 7.3.3 访问类的数据成员 7.3.4 类的成员函数 7.3.5 成员函数定义的位置 7.3.6 内联函数 7.4 类构造函数 7.4.1 构造函数的概念 7.4.2 默认的构造函数 7 4.3 在类定义指定默认的形参值 7.4.4 在构造函数使用初始化列表 7.5 类的私有成员 7.5.1 访问私有类成员 7.5.2 类的友元函数 7.5.3 默认复制构造函数 7.6 this指针 7.7 类的const对象 7.7.1 类的const成员函数 7.7.2 类外部的成员函数定义 7.8 类对象的数组 7.9 类的静态成员 7.9.1 类的静态数据成员 7.9.2 类的静态函数成员 7.10 类对象的指针和引用 7.10.1 类对象的指针 7.10.2 类对象的引用 7.11 C++/CLI编程 7.11.1 定义数值类类型 7.11.2 定义引用类类型 7.11.3 类属性 7.11.4 initonly字段 7.11.5 静态构造函数 7.12 小结 7.13 练习 第8章 深入理解类 8.1 类的析构函数 8.1.1 析构函数的概念 8.1.2 默认的析构函数 8.1.3 析构函数与动态内存分配 8.2 实现复制构造函数 8.3 在变量之间共享内存 8.3.1 定义联台 8.3.2 匿名联合 8.3.3 类和结构的联合 8.4 运算符重载 8.4.1 实现重载的运算符 8.4.2 实现对运算符的完全支持 8.4.3 重载赋值运算符 8.4.4 重载加法运算符 8.4.5 重载递增和递减运算符 8.5 类模板 8.5.1 定义类模板 8.5.2 根据类模板创建对象 8.5.3 使用有多个形参的类模板 8.6 使用类 8.6.1 类接口的概念 8.6.2 定义问题 8.6.3 实现CBox类 8.6.4 定义CBox类 8.6.5 使用CBox类 8.7 组织程序代码 8.8 C++/CLI编程 8.8.1 在数值类重载运算符 8.8.2 重载递增和递减运算符 8.8.3 在引用类重载运算符 8.9 小结 8.1O 练习 第9章 类继承和虚函数 9.1 面向对象编程的基本思想 9.2 类的继承 9.2.1 基类的概念 9.2.2 基类的派生类 9.3 继承机制下的访问控制 9.3.1 派生类构造函数的操作 9.3.2 声明类的保护成员 9.3.3 继承类成员的访问级别 9.4 派生类的复制构造函数 9.5 友元类成员 9.5.1 友元类 9.5.2 对类友元关系的限制 9.6 虚函数 9.6.1 虚函数的概念 9.6.2 使用指向类对象的指针 9.6.3 使用引用处理虚函数 9.6.4 纯虚函数 9.6.5 抽象类 9.6.6 间接基类 9.6.7 虚析构函数 9.7 类类型之间的强制转换 9.8 嵌套类 9.9 C++/CLI编程 9.9.1 C++/CLI类的继承 9.9.2 接口类 9.9.3 定义接口类 9.9.4 类和程序集 9.9.5 被指定为new的函数 9.9.6 委托和事件 9.9.7 引用类的析构函数和结束函数 9.9.8 通用类 9.10 小结 9.11 练习 第10章 调试技术 10.1 理解调试 10.1.1 程序故障 10.1.2 常见故障 10.2 基本的调试操作 10.2.1 设置断点 10.2.2 设置跟踪点 10.2.3 启动调试模式 10.2.4 修改变量的值 10.3 添加调试代码 10.3.1 使用断言 10.3.2 添加自己的调试代码 10.4 调试程序 10.4.1 调用堆栈 10.4.2 单步执行到出错位置 10.5 测试扩展的类 10.6 调试动态内存 10.6.1 检查自由存储器的函数 10.6.2 控制自由存储器的调试操作 10.6.3 自由存储器的调试输出 10.7 调试C++/CLI程序 10.8 小结 第11章 Windows编程的概念 11.1 Windows编程基础 11.1.1窗口的元素 11.1.2 Windows程序与操作系统 11.1.3事件驱动型程序 11.1.4 Windows消息 11.1.5 WindowsAPI 11.1.6.Windows数据类型 11.1.7 Windows程序的符号 11.2 Windows程序的结构 11.2.1 WinMain()函数 11.2.2消息处理函数 11.2.3简单的Windows程序 11.3 Windows程序的组织 11.4 MFC 11.4.1 MFC标记法 11.4.2 MFC程序的组织方式 11.5使用Windows Forms 11.6小结 第12章 使用MFC编写Windows程序 12.1 MFC的文档,视图概念 12.1.1 文档的概念 12.1.2 文档界面 12.1.3 视图的概念 12.1.4 连接文档和视图 12.1.5 应用程序和MFC 12.2 创建MFC应用程序 12.2.1 创建SDI应用程序 12.2.2 MFCApplicationwizard的输出 12.2.3 创建MDI应用程序 12.3 小结 12.4 练习 第13章 处理菜单和工具栏 13.1 与Windows进行通信 13.1.1 了解消息映射 13.1.2 消息类别 13.1.3 处理程序的消息 13.2 扩充Sketcher程序 13.3 菜单的元素 13.4 为菜单消息添加处理程序 13.4.1 选择处理菜单消息的类 13.4.2 创建菜单消息函数 13.4.3 编写菜单消息函数的代码 13.4.4 添加更新用户界面的消息处理程序 13.5 添加工具栏按钮 13.5.1 编辑工具栏按钮的属性 13.5.2 练习使用工具栏按钮 13.5.3 添加工具提示 13.6 小结 13.7 练习题 第14章 在窗口绘图 14.1 窗口绘图的基础知识 14.1.1 窗口客户区 14.1.2 Windows图形设备界面 14.2 Visual C++的绘图机制 14.2.1 应用程序的视图类 14.2.2 CDC类 14.3 实际绘制图形 14.4 对鼠标进行编程 14.4.1 鼠标发出的消息 14.4.2 鼠标消息处理程序 14.4.3 使用鼠标绘图 14.5 练习使用Sketcher程序 14.5.1 运行这个示例 14.5.2 捕获鼠标消息 14.6 小结 14.7 练习题 第15章 创建文档和改进视图 15.1 什么是集合类 15.1.1 集合的类型 15.1.2 类型安全的集合类 15.1.3 对象集合 15.1.4 类型化指针集合 15.2 使用CList模板类 15.2.1 绘制曲线 15.2.2 定义CCurve类 15.2.3 实现CCurve类 15.2.4 练习使用CCurve类 15.3 创建文档 15.4 改进视图 15.4.1 更新多个视图 15.4.2 滚动视图 15.4.3 使用MM_LOENGLISH映射模式 15.5 删除和移动形状 15.6 实现上下文菜单 15.6.1 关联菜单和类 15.6.2 选择上下文菜单 15.6.3 醒目显示元素 15.6.4 处理菜单消息 15.7 处理被屏蔽的元素 15.8 小结 15.9 练习 第16章 使用对话框和控件 16.1 理解对话框 16.2 理解控件 16.3 创建对话框资源 16.4 对话框的编程 16.4.1 添加对话框类 16.4.2 模态和非模态对话框 16.4.3 显示对话框 16.5 支持对话框控件 16.5.1 初始化控件 16.5.2 处理单选按钮消息 16.6 完成对话框的操作 16.6.1 给文档类添加存储线宽的成员 16.6.2 给元素添加线宽 16.6.3 在视图创建元素 16.6.4 练习使用对话框 16.7 使用微调按钮控件 16.7.1 添加Scale菜单项和工具栏按钮 16.7.2 创建微调按钮 16.7.3 生成比例对话框类 16.7.4 显示微调按钮 16.8 使用比例系数 16.8.1 可缩放的映射模式 16.8.2 设置文档的大小 16.8.3 设置映射模式 16.8.4 同时实现滚动与缩放 16.9 使用状态栏 16.10 使用列表框 16.10.1 删除比例对话框 16.1O.2 创建列表框控件 16.11 使用编辑框控件 16.11.1 创建编辑框资源 16.11.2 创建对话框类 16.11.3 添加Text菜单项 16.11.4 定义文本元素 16.11.5 实现CText类 16.11.6 创建文本元素 16.12 小结 16.13 练习 第17章 存储和打印文档 17.1 了解串行化 17.2 串行化文档 17.2.1 文档类定义的串行化 17.2.2 丈档类实现的串行化 17.2.3 基于CObject的类的功能 17.2.4 串行化的工作方式 17.2.5 如何实现类的串行化 17.3 应用串行化 17.3.1 记录文档修改 17.3.2 串行化文档 17.3.3 串行化元素类 17.4 练习串行化 17.5 移动文本 17.6 打印文档 17.7 实现多页打印 17.7.1 获取文档的总尺寸 17.7.2 存储打印数据 17.7.3 准备打印 17.7.4 打印后的清除 17.7.5 准备设备上下文 17.7.6 打印文档 17.7.7 获得文档的打印输出 17.8 小结 17.9 练习题 第18章 编写自己的DLL 18.1 了解DLL 18.1.1 DLL的工作方式 18.1.2 DLL的内容 18.1.3 DLL变体 18.2 决定放入DLL的内容 18.3 编写DLL 18.3.1 编写和使用扩展DLL 18.3.2 从DLL导出变量和函数 18.3.3 将符号导入程序 18.3.4 实现符号从DLL的导出 18.4 小结 18.5 练习题 第19章 连接到数据源 19.1 数据库基础知识 19.2 SQL 19.2.1 使用SQL检索数据 19.2.2 使用SQL连接表 19.2.3 对记录进行排序 19.3 MFC的数据库支持 19.4 创建数据库应用程序 19.4.1 注册ODBC数据库 19.4.2 生成MFC ODBC程序 19.4.3 了解程序结构 19.4.4 示例练习 19.5 对记录集进行排序 19.6 使用另一个记录集对象 19.6.1 添加记录集类 19.6.2 添加记录集的视图类 19.6.3 定制记录集 19.6.4 访问多个表视图 19.6.5 查看产品的订单 19.7 查看客户的详细情况 19.7.1 添加客户记录集 19.7.2 创建客户对话框资源 19.7.3 创建客户视图类 19.7.4 添加过滤器 19.7.5 实现过滤器参数 19.7.6 链接订单对话框和客户对话框 19.7.7 练习使用数据库查看器 19.8 小结 19.9 练习题 第20章 更新数据源 20.1 更新操作 20.1.1 CRecordset更新操作 20.1.2 事务 20.2 简单的更新示例 20.3 管理更新过程 20.4 向表添加行 20.4.1 订单录入过程 20.4.2 创建资源 20.4.3 创建记录集 20.4.4 创建记录集视图 20.4.5 给对话框资源添加控件 20.4.6 实现对话框切换 20.4.7 创建订单ID 20.4.8 存储订单数据 20.4.9 为订单选择产品 20.4.10 添加新订单 20.5 小结 20.6 练习 第21章 使用Windows Forms的应用程序 21.1 理解Wqndows Forms 21.2 理解Windows Forms应用程序 21.2.1 修改窗体的属性 21.2.2 如何启动应用程序 21.3 定制应用程序GUI 21.3.1 给窗体添加控件 21.3.2 添加选项卡控件 21.3.3 使用CroupBox控件 21.3.4 使用Button控件 21.3.5 使用WebBrowser控件 21.3.6 Winning应用程序的操作 21.3.7 添加上下文菜单 21.3.8 创建事件处理程序 21.3.9 处理Limits菜单的事件 21.3.10 创建对话框 21.3.11 使用对话框 21.3.12 添加第二个对话框 21.3.13 实现Help|About菜单项 21.3.14 处理按钮单击事件 21.3.15 响应上下文莱单 21.4 小结 21.5 练习 第22章 在Windows Forms应用程序访问数据源 22.1 使用数据源 22.2 访问并显示数据 22.3 使用DataGridView控件 22.4 在无约束模式使用DataGridView控件 22.5 定制DataGridView控件 22.5.1 定制题头单元格 22.5.2 定制非题头单元格 22.5.3 动态设置单元格样式 22.6 使用约束模式 22.7 BindingSource组件 22.8 使用BindingNavigator控件 22.9 绑定到单独的控件 22.10 使用多个表 22.11 小结 22.12 练习 附录A C++关键字 A1 ISO/ANSI C++关键宇 A2 C++/CLI关键字 附录B ASCII码
Visual C++ 2005入门经典.pdf(整理并添加所有书签) ,看书的时候更方便. 封面 目录 第1章 使用Visual C++ 2005 编程 1.1 .NET Framework 1.2 CLR 1.3 编写C++应用程序 1.4 学习windows编程 1.4.1 学习c++ 1.4.2 C++标准 1.4.3 控制台应用程序 1.4.4 Windows编程概念 1.5 集成开发环境简介 1.6 使用IDE 1.6.1 工具栏选项 1.6.2 可停靠的工具栏 1.6.3 文档 1.6.4 项目和解决方案 1.6.5 设置Visual C++2005的选项 1.6.6 创建和执行windows应用程序 1.6.7 创建windows Forms应用程序 1.7 小结 第2章 数据、变量和计算 2.1 C++程序结构 2.1.1 程序注释 2.1.2 #include指令——头文件 2.1.3 命名空间和using声明 2.1.4 main()函数 2.1.5 程序语句 2.1.6 空白 2.1.7 语句块 2.1.8 自动生成的控制台程序 2.2 定义变量 2.2.1 命名变量 2.2.2 C++的关键字 2.2.3 声明变量 2.2.4 变量的初值 2.3 基本数据类型 2.3.1 整型变量 2.3.2 字符数据类型 2.3.3 整型修饰符 2.3.4 布尔类型 2.3.5 浮点类型 2.3.6 ISO/ANSI C++的基本类型 2.3.7 字面值 2.3.8 定义数据类型的同义词 2.3.9 具有特定值集的变量 2.3.10 指定枚举常量的类型 2.4 基本的输入输出操作 2.4.1 从键盘输入 2.4.2 到命令行的输出 2.4.3 格式化输出 2.4.4 转义序列 2.5 C++的计算 2.5.1 赋值语句 2.5.2 算术运算 2.5.3 计算余数 2.5.4 修改变量 2.5.5 增量和减量运算符 2.5.6 计算的顺序 2.6 变量类型和类型强制转换 2.6.1 对操作数进行类型强制转换的规则 2.6.2 赋值语句的类型强制转换 2.6.3 显式类型强制转换 2.6.4 老式的类型强制转换 2.6.5 按位运算符 2.7 了解存储时间和作用域 2.7.1 自动变量 2.7.2 决定变量声明的位置 2.7.3 全局娈量 2.7.4 静态变量 2.8 命名空间 2.8.1 声明命名空间 2.8.2 多个命名空间 2.9 C++/CLI编程 2.9.1 C++/CLI特有的基本数据类型 2.9.2 命令行上的C++/CLI输出 2.9.3 C++/CLI特有的功能——格式化输出 2.9.4 C++/CLI的键盘输入 2.9.5 使用safe cast 2.9.6 C++/CLI枚举 2.10 小结 2.11 练习题 第3章 判断和循环 3.1 比较数据值 3.1.1 if语句 3.1.2 嵌套if语句 3.1.3 扩展的if语句 3.1.4 嵌套的if-else语句 3.1.5 逻辑运算符和表达式 3.1.6 条件运算符 3.1.7 switch语句 3.1.8 无条件转移 3.2 重复执行语句块 3.2.1 循环的概念 3.2.2 for循环的变体 3.2.3 while循环 3.2.4 do-while循环 3.2.5 嵌套的循环 3.3 C++/CLI编程 3.4 小结 3.5 练习 第4章 数组、字符串和指针 4.1 处理多个相同类型的数据值 4.1.1 数组 4.1.2 声明数组 4.1.3 初始化数组 4.1.4 字符数组和字符串处理 4.1.5 多维数组 4.2 间接数据存取 4.2.1 指针的概念 4.2.2 声明指针 4.2.3 使用指针 4.2.4 初始化指针 4.2.5 sizeof运算符 4.2.6 常量指针和指向常量的指针 4.2.7指针和数组 4.3 动态内存分配 4.3.1 堆的别名——自由存储器 4.3.2 new和delete运算符 4.3.3 为数组动态分配内存 4.3.4 多维数组的动态分配 4.4 使用引用 4.4.1 引用的概念 4.4.2 声明并初始化引用 4.5 C++/CLI编程 4.5.1 跟踪句柄 4.5.2 CLR数组 4.5.3 字符串 4.5.4 跟踪引用 4.5.5 内部指针 4.6 小结 4.7 练习 第5章 程序结构(1) 5.1 理解函数 5.1.1 需要函数的原因 5.1.2 函数的结构 5.1.3 使用函数 5.2 给函数传递实参 5.2.1 按值传递机制 5.2.2 给函数传递指针实参 5.2.3 给函数传递数组 5.2.4 给函数传递引用实参 5.2.5 使用const修饰符 5.2.6 main()函数的实参 5.2.7 接受数量不定的函数实参 5.3 从函数返回值 5.3.1 返回指针 5.3.2 返回引用 5.3.3 函数的静态变量 5.4 递归函数调用 5.5 C++/CLI编程 5.5.1 接受数量可变实参的函数 5.5.2 main()的实参 5.6 小结 5.7 练习 第6章 程序结构(2) 6.1 函数指针 6.1.1 声明函数指针 6.1.2 函数指针作为实参 6.1.3 函数指针的数组 6.2 初始化函数形参 6.3 异常 6.3.1 抛出异常 6.3.2 捕获异常 6.3.3 MFC的异常处理 6.4 处理内存分配错误 6.5 函数重载 6.5.1 函数重载的概念 6.5.2 何时重载函数 6.6 函数模板 6.7 使用函数的示例 6.7.1 实现计算器 6.7.2 从字符串删除空格 6.7.3 计算表达式的值 6.7.4 获得项值 6.7.5 分析数 6.7.6 整合程序 6.7.7 扩展程序 6.7.8 提取子字符串 6.7.9 运行修改过的程序 6.8 C++/CLI编程 6.8.1 理解类函数 6.8.2 CLR版本的计算器程序 6.9 小结 6.10 练习 第7章 自定义数据类型 7.1 C++的结构 7.1.1 结构的概念 7.1.2 定义结构 7.1.3 初始化结构 7.1.4 访问结构的成员 7.1.5 伴随结构的智能帮助 7.1.6 RECT结构 7.1.7 使用指针处理结构 7.2 数据类型、对象、类和实例 7.2.1 类的起源 7.2.2 类的操作 7.2.3 术语 7.3 理解类 7.3.1 定义类 7.3.2 声明类的对象 7.3.3 访问类的数据成员 7.3.4 类的成员函数 7.3.5 成员函数定义的位置 7.3.6 内联函数 7.4 类构造函数 7.4.1 构造函数的概念 7.4.2 默认的构造函数 7 4.3 在类定义指定默认的形参值 7.4.4 在构造函数使用初始化列表 7.5 类的私有成员 7.5.1 访问私有类成员 7.5.2 类的友元函数 7.5.3 默认复制构造函数 7.6 this指针 7.7 类的const对象 7.7.1 类的const成员函数 7.7.2 类外部的成员函数定义 7.8 类对象的数组 7.9 类的静态成员 7.9.1 类的静态数据成员 7.9.2 类的静态函数成员 7.10 类对象的指针和引用 7.10.1 类对象的指针 7.10.2 类对象的引用 7.11 C++/CLI编程 7.11.1 定义数值类类型 7.11.2 定义引用类类型 7.11.3 类属性 7.11.4 initonly字段 7.11.5 静态构造函数 7.12 小结 7.13 练习 第8章 深入理解类 8.1 类的析构函数 8.1.1 析构函数的概念 8.1.2 默认的析构函数 8.1.3 析构函数与动态内存分配 8.2 实现复制构造函数 8.3 在变量之间共享内存 8.3.1 定义联台 8.3.2 匿名联合 8.3.3 类和结构的联合 8.4 运算符重载 8.4.1 实现重载的运算符 8.4.2 实现对运算符的完全支持 8.4.3 重载赋值运算符 8.4.4 重载加法运算符 8.4.5 重载递增和递减运算符 8.5 类模板 8.5.1 定义类模板 8.5.2 根据类模板创建对象 8.5.3 使用有多个形参的类模板 8.6 使用类 8.6.1 类接口的概念 8.6.2 定义问题 8.6.3 实现CBox类 8.6.4 定义CBox类 8.6.5 使用CBox类 8.7 组织程序代码 8.8 C++/CLI编程 8.8.1 在数值类重载运算符 8.8.2 重载递增和递减运算符 8.8.3 在引用类重载运算符 8.9 小结 8.1O 练习 第9章 类继承和虚函数 9.1 面向对象编程的基本思想 9.2 类的继承 9.2.1 基类的概念 9.2.2 基类的派生类 9.3 继承机制下的访问控制 9.3.1 派生类构造函数的操作 9.3.2 声明类的保护成员 9.3.3 继承类成员的访问级别 9.4 派生类的复制构造函数 9.5 友元类成员 9.5.1 友元类 9.5.2 对类友元关系的限制 9.6 虚函数 9.6.1 虚函数的概念 9.6.2 使用指向类对象的指针 9.6.3 使用引用处理虚函数 9.6.4 纯虚函数 9.6.5 抽象类 9.6.6 间接基类 9.6.7 虚析构函数 9.7 类类型之间的强制转换 9.8 嵌套类 9.9 C++/CLI编程 9.9.1 C++/CLI类的继承 9.9.2 接口类 9.9.3 定义接口类 9.9.4 类和程序集 9.9.5 被指定为new的函数 9.9.6 委托和事件 9.9.7 引用类的析构函数和结束函数 9.9.8 通用类 9.10 小结 9.11 练习 第10章 调试技术 10.1 理解调试 10.1.1 程序故障 10.1.2 常见故障 10.2 基本的调试操作 10.2.1 设置断点 10.2.2 设置跟踪点 10.2.3 启动调试模式 10.2.4 修改变量的值 10.3 添加调试代码 10.3.1 使用断言 10.3.2 添加自己的调试代码 10.4 调试程序 10.4.1 调用堆栈 10.4.2 单步执行到出错位置 10.5 测试扩展的类 10.6 调试动态内存 10.6.1 检查自由存储器的函数 10.6.2 控制自由存储器的调试操作 10.6.3 自由存储器的调试输出 10.7 调试C++/CLI程序 10.8 小结 第11章 Windows编程的概念 11.1 Windows编程基础 11.1.1窗口的元素 11.1.2 Windows程序与操作系统 11.1.3事件驱动型程序 11.1.4 Windows消息 11.1.5 WindowsAPI 11.1.6.Windows数据类型 11.1.7 Windows程序的符号 11.2 Windows程序的结构 11.2.1 WinMain()函数 11.2.2消息处理函数 11.2.3简单的Windows程序 11.3 Windows程序的组织 11.4 MFC 11.4.1 MFC标记法 11.4.2 MFC程序的组织方式 11.5使用Windows Forms 11.6小结 第12章 使用MFC编写Windows程序 12.1 MFC的文档,视图概念 12.1.1 文档的概念 12.1.2 文档界面 12.1.3 视图的概念 12.1.4 连接文档和视图 12.1.5 应用程序和MFC 12.2 创建MFC应用程序 12.2.1 创建SDI应用程序 12.2.2 MFCApplicationwizard的输出 12.2.3 创建MDI应用程序 12.3 小结 12.4 练习 第13章 处理菜单和工具栏 13.1 与Windows进行通信 13.1.1 了解消息映射 13.1.2 消息类别 13.1.3 处理程序的消息 13.2 扩充Sketcher程序 13.3 菜单的元素 13.4 为菜单消息添加处理程序 13.4.1 选择处理菜单消息的类 13.4.2 创建菜单消息函数 13.4.3 编写菜单消息函数的代码 13.4.4 添加更新用户界面的消息处理程序 13.5 添加工具栏按钮 13.5.1 编辑工具栏按钮的属性 13.5.2 练习使用工具栏按钮 13.5.3 添加工具提示 13.6 小结 13.7 练习题 第14章 在窗口绘图 14.1 窗口绘图的基础知识 14.1.1 窗口客户区 14.1.2 Windows图形设备界面 14.2 Visual C++的绘图机制 14.2.1 应用程序的视图类 14.2.2 CDC类 14.3 实际绘制图形 14.4 对鼠标进行编程 14.4.1 鼠标发出的消息 14.4.2 鼠标消息处理程序 14.4.3 使用鼠标绘图 14.5 练习使用Sketcher程序 14.5.1 运行这个示例 14.5.2 捕获鼠标消息 14.6 小结 14.7 练习题 第15章 创建文档和改进视图 15.1 什么是集合类 15.1.1 集合的类型 15.1.2 类型安全的集合类 15.1.3 对象集合 15.1.4 类型化指针集合 15.2 使用CList模板类 15.2.1 绘制曲线 15.2.2 定义CCurve类 15.2.3 实现CCurve类 15.2.4 练习使用CCurve类 15.3 创建文档 15.4 改进视图 15.4.1 更新多个视图 15.4.2 滚动视图 15.4.3 使用MM_LOENGLISH映射模式 15.5 删除和移动形状 15.6 实现上下文菜单 15.6.1 关联菜单和类 15.6.2 选择上下文菜单 15.6.3 醒目显示元素 15.6.4 处理菜单消息 15.7 处理被屏蔽的元素 15.8 小结 15.9 练习 第16章 使用对话框和控件 16.1 理解对话框 16.2 理解控件 16.3 创建对话框资源 16.4 对话框的编程 16.4.1 添加对话框类 16.4.2 模态和非模态对话框 16.4.3 显示对话框 16.5 支持对话框控件 16.5.1 初始化控件 16.5.2 处理单选按钮消息 16.6 完成对话框的操作 16.6.1 给文档类添加存储线宽的成员 16.6.2 给元素添加线宽 16.6.3 在视图创建元素 16.6.4 练习使用对话框 16.7 使用微调按钮控件 16.7.1 添加Scale菜单项和工具栏按钮 16.7.2 创建微调按钮 16.7.3 生成比例对话框类 16.7.4 显示微调按钮 16.8 使用比例系数 16.8.1 可缩放的映射模式 16.8.2 设置文档的大小 16.8.3 设置映射模式 16.8.4 同时实现滚动与缩放 16.9 使用状态栏 16.10 使用列表框 16.10.1 删除比例对话框 16.1O.2 创建列表框控件 16.11 使用编辑框控件 16.11.1 创建编辑框资源 16.11.2 创建对话框类 16.11.3 添加Text菜单项 16.11.4 定义文本元素 16.11.5 实现CText类 16.11.6 创建文本元素 16.12 小结 16.13 练习 第17章 存储和打印文档 17.1 了解串行化 17.2 串行化文档 17.2.1 文档类定义的串行化 17.2.2 丈档类实现的串行化 17.2.3 基于CObject的类的功能 17.2.4 串行化的工作方式 17.2.5 如何实现类的串行化 17.3 应用串行化 17.3.1 记录文档修改 17.3.2 串行化文档 17.3.3 串行化元素类 17.4 练习串行化 17.5 移动文本 17.6 打印文档 17.7 实现多页打印 17.7.1 获取文档的总尺寸 17.7.2 存储打印数据 17.7.3 准备打印 17.7.4 打印后的清除 17.7.5 准备设备上下文 17.7.6 打印文档 17.7.7 获得文档的打印输出 17.8 小结 17.9 练习题 第18章 编写自己的DLL 18.1 了解DLL 18.1.1 DLL的工作方式 18.1.2 DLL的内容 18.1.3 DLL变体 18.2 决定放入DLL的内容 18.3 编写DLL 18.3.1 编写和使用扩展DLL 18.3.2 从DLL导出变量和函数 18.3.3 将符号导入程序 18.3.4 实现符号从DLL的导出 18.4 小结 18.5 练习题 第19章 连接到数据源 19.1 数据库基础知识 19.2 SQL 19.2.1 使用SQL检索数据 19.2.2 使用SQL连接表 19.2.3 对记录进行排序 19.3 MFC的数据库支持 19.4 创建数据库应用程序 19.4.1 注册ODBC数据库 19.4.2 生成MFC ODBC程序 19.4.3 了解程序结构 19.4.4 示例练习 19.5 对记录集进行排序 19.6 使用另一个记录集对象 19.6.1 添加记录集类 19.6.2 添加记录集的视图类 19.6.3 定制记录集 19.6.4 访问多个表视图 19.6.5 查看产品的订单 19.7 查看客户的详细情况 19.7.1 添加客户记录集 19.7.2 创建客户对话框资源 19.7.3 创建客户视图类 19.7.4 添加过滤器 19.7.5 实现过滤器参数 19.7.6 链接订单对话框和客户对话框 19.7.7 练习使用数据库查看器 19.8 小结 19.9 练习题 第20章 更新数据源 20.1 更新操作 20.1.1 CRecordset更新操作 20.1.2 事务 20.2 简单的更新示例 20.3 管理更新过程 20.4 向表添加行 20.4.1 订单录入过程 20.4.2 创建资源 20.4.3 创建记录集 20.4.4 创建记录集视图 20.4.5 给对话框资源添加控件 20.4.6 实现对话框切换 20.4.7 创建订单ID 20.4.8 存储订单数据 20.4.9 为订单选择产品 20.4.10 添加新订单 20.5 小结 20.6 练习 第21章 使用Windows Forms的应用程序 21.1 理解Wqndows Forms 21.2 理解Windows Forms应用程序 21.2.1 修改窗体的属性 21.2.2 如何启动应用程序 21.3 定制应用程序GUI 21.3.1 给窗体添加控件 21.3.2 添加选项卡控件 21.3.3 使用CroupBox控件 21.3.4 使用Button控件 21.3.5 使用WebBrowser控件 21.3.6 Winning应用程序的操作 21.3.7 添加上下文菜单 21.3.8 创建事件处理程序 21.3.9 处理Limits菜单的事件 21.3.10 创建对话框 21.3.11 使用对话框 21.3.12 添加第二个对话框 21.3.13 实现Help|About菜单项 21.3.14 处理按钮单击事件 21.3.15 响应上下文莱单 21.4 小结 21.5 练习 第22章 在Windows Forms应用程序访问数据源 22.1 使用数据源 22.2 访问并显示数据 22.3 使用DataGridView控件 22.4 在无约束模式使用DataGridView控件 22.5 定制DataGridView控件 22.5.1 定制题头单元格 22.5.2 定制非题头单元格 22.5.3 动态设置单元格样式 22.6 使用约束模式 22.7 BindingSource组件 22.8 使用BindingNavigator控件 22.9 绑定到单独的控件 22.10 使用多个表 22.11 小结 22.12 练习 附录A C++关键字 A1 ISO/ANSI C++关键宇 A2 C++/CLI关键字 附录B ASCII码
### 回答1: 在MFC工程调用DLL对话框,需要进行以下步骤: 1. 在MFC工程的资源文件夹创建一个对话框资源文件(.dlg)。 2. 编写一个导出函数,在该函数创建并显示上述对话框,并将其作为返回值返回。 3. 在DLL代码添加导出函数的定义和声明,可以使用__declspec(dllexport)声明该函数为导出函数。 4. 在MFC工程使用LoadLibrary函数加载该DLL,并使用GetProcAddress函数获取导出函数的地址。 5. 使用获得的函数指针调用导出函数,获取对话框句柄并显示对话框。 6. 对话框处理完成后,调用EndDialog函数将结果返回给MFC工程。 通过上述步骤,就可以在MFC工程调用DLL对话框了。需要注意的是,在使用DLL的资源文件时,必须在MFC应用程序调用AfxSetResourceHandle以确保使用正确的资源句柄。 ### 回答2: MFC是微软公司开发的一套基于Windows操作系统的应用程序框架。在MFC,可以使用CDialog类创建对话框DLL是一种动态链接库,它允许在不同的应用程序之间共享代码和数据。假设现在需要在MFC调用DLL对话框,则可以按照以下步骤进行操作: 1. 在DLL创建对话框 首先,在DLL创建一个对话框资源,并使用CDialog类派生一个对话框类。例如: class CDllDialog : public CDialog { public: CDllDialog(CWnd* pParent = NULL); enum { IDD = IDD_DLGDIALOG }; protected: virtual void DoDataExchange(CDataExchange* pDX); DECLARE_MESSAGE_MAP() }; 在此类,可以根据需要添加控件和处理函数。 2. 在DLL导出对话框类 接下来,需要在DLL对话框类导出,以便能够在MFC使用。在DLL添加以下代码: extern "C" __declspec(dllexport) CDialog* CreateDialog() { return new CDllDialog(); } 此代码将CreateDialog函数导出为一个公共的DLL函数,并返回一个CDllDialog对象。 3. 在MFC调用DLL对话框 现在,在MFC可以使用以下代码调用DLL对话框: #include "windows.h" #include "afxwin.h" typedef CDialog* (*fnCreateDialog)(); void CallDllDialog() { HMODULE hDll = LoadLibrary(_T("mydll.dll")); if (hDll != NULL) { fnCreateDialog pfnCreateDialog = (fnCreateDialog)GetProcAddress(hDll, "CreateDialog"); if (pfnCreateDialog != NULL) { CDialog* pDlg = (*pfnCreateDialog)(); if (pDlg != NULL) { pDlg->DoModal(); delete pDlg; } } FreeLibrary(hDll); } } 此代码首先使用LoadLibrary函数加载DLL文件,然后使用GetProcAddress函数获取CreateDialog函数的指针。如果成功获取到函数指针,则可以使用该函数创建CDllDialog对象,并调用DoModal函数显示对话框。 总之,调用DLL对话框需要在DLL创建对话框类并导出,然后在MFC使用LoadLibrary函数和GetProcAddress函数获取函数指针,并创建对话框对象进行操作。 ### 回答3: 在MFC可以使用LoadLibrary函数来加载DLL,并且使用GetProcAddress函数来获取DLL的函数地址,然后调用DLL的函数实现对话框调用。 以下是实现步骤: 1. 定义DLL的头文件 首先需要在MFC工程定义DLL的头文件,包含DLL的函数声明和结构体定义等内容。 2. 加载DLL 在需要使用DLL函数的地方调用LoadLibrary函数来加载DLL,并保存句柄。 HINSTANCE hDll = LoadLibrary(L"MyDialog.dll"); 3. 获取函数地址 使用GetProcAddress函数获取DLL需要调用的函数的地址。在DLL对话框的导出函数名为“ShowMyDialog”,因此可以使用以下代码获取该函数的地址。 typedef void (*PFDialogFunc)(); PFDialogFunc pFunc = (PFDialogFunc)GetProcAddress(hDll, "ShowMyDialog"); 4. 调用函数 获取到函数地址以后就可以通过函数指针来调用该函数,并显示对话框。 if (pFunc != NULL) { (*pFunc)(); } 在DLL定义的导出函数需要以“__declspec(dllexport)”修饰符进行修饰,例如: __declspec(dllexport) void ShowMyDialog() { CMyDialog dlg; dlg.DoModal(); } 需要注意的是,如果DLL对话框涉及到资源(如图片等),需要将资源文件一并打包到DLL。另外,DLL的编译选项也需要与主工程保持一致。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值