返 回 总 目 录
目 录
第 | 1 |
章 |
V is u a l C + + 引 论 3 |
---|---|---|---|
1 .1 | 为什么要 用 V is u a l C + + 5 | ||
1 .2 | 本版 V is u a l C + + 的新特性 6 | ||
1 .3 | — 些 缺 陷 2 3 | ||
1 .4 | 考察界面 元素 2 5 | ||
第 | 2 |
章 |
建 立 基 本 应 用 程 序 4 1 |
2 .1 | 了解应用 程序类型 4 2 | ||
2 .2 | 编写控制 台应用程序 5 5 | ||
2 .3 | 编写基于 对话框的应用 程序 6 6 | ||
2 .4 | 编写单文 档应用程序 8 2 | ||
2 .5 | 编写基于 HT M L 文档的应 用程序 9 2 | ||
第 | 3 |
章 |
理 解 V is u a l C + + 的 资 源 1 0 0 |
3 .1 | 定制使用 应用程序向导 生成的应用程 序所用的资源 1 0 3 | ||
3 .2 | 使用加速 键和菜单 1 2 9 | ||
3 .3 | 使用工具 条 1 3 6 |
第 1 章 V isu a l C + + 引 论
只 有 真 正 的 程 序 员 才 使 用 V is u a l C + + 反 过 来 则 并 不 见 得 如 此 最 近 似乎 有 许 多 专 业 的 程 序 员 放 弃 了 使 用 这 一 语 言 而 改 用 了 其 它 产 品 提 供 的 RA D 快速 应 用 开 发 环 境 许 多 人 认 为 V is u a l C + + 太 古 老 太 烦 琐 学 起 来 太 困 难 了
说 句 实 在 话 V is u a l C + + 的 学 习 周 期 确 实 比 其 它 语 言 要 长 可 以 很 轻 易 地 引入 需 要 花 上 数 小 时 才 能 排 除 的 微 妙 错 误 这 一 事 实 一 点 也 无 助 于 提 高 程 序 员 的 开发 效 率
然 而 让 我 们 先 把 这 些 负 面 缺 陷 暂 时 放 到 一 边 来 看 一 看 V is u a l C + + 具 备的 长 处 使 用 V is u a l C + + 主 要 的 原 因 之 一 就 在 于 它 的 灵 活 性 你 可 以 彻 底 地 控制 整 个 开 发 环 境 其 它 语 言 则 更 多 地 趋 向 于 庇 护 程 序 员 当 要 做 一 些 基 本 的 东西 时 它 们 会 做 得 很 好 不 幸 的 是 当 你 需 要 使 用 像 C+ + 这 样 的 语 言 删 除 编 程中 的 繁 文 缛 节 并 把 任 务 完 成 时 这 种 保 护 作 用 就 变 成 了 开 发 工 作 的 障 碍
长 期 以 来 V is u a l C + + 一 直 拥 有 能 够 创 建 短 小 高 效 程 序 的 美 誉 使 用 这 种 语言 编 写 的 程 序 几 乎 可 以 与 用 汇 编 语 言 编 写 的 程 序 达 到 相 同 的 运 行 速 度 并 且 避免 了 汇 编 语 言 存 在 的 各 种 问 题 C+ + 实 际 上 是 介 于 汇 编 语 言 中 寄 存 器 编 程 的 神秘 莫 测 和 像 P a s cal 这 种 保 护 型 编 程 环 境 方 便 性 之 中 间 难 度 的 语 言
C+
- 是 编 写 诸 如 操 作 系 统 设 备 驱 动 程 序 以 及 动 态 链 接 库 DL L 的 强 大 语言 这 一 点 不 会 不 引 起 你 的 注 意 这 三 种 领 域 代 码 的 开 发 依 然 是 V is u a l C + + 的主 战 场 V is u a l C + + 生 成 的 短 小 快 速 的 代 码 在 操 作 系 统 类 对 时 间 要 求 很 高 的
系 统 中 获 得 了 极 高 的 赞 誉
到 现 在 为 止 我 告 诉 你 的 一 切 你 可 能 已 经 在 其 它 书 籍 中 看 过 无 数 遍 了 下面 就 让 我 讲 一 些 这 个 版 本 的 V is u a l C + + 中 独 有 的 内 容 M ic ros oft 添 加 到 这 个 版本 的 V is u a l C + + 中 的 最 新 特 性 之 一 是 更 佳 的 原 型 能 力 这 一 点 通 过 增 强 的 向 导来 实 现 现 在 这 个 特 性 还 不 能 把 V is u a l C + + 提 升 到 像 V isu a l B a sic 向 导 相 同 的水 平 上 但 它 确 实 减 少 了 开 发 应 用 程 序 的 入 门 时 间 — — 这 是 个 深 受 欢 迎 的 变 化另 外 增 强 的 向 导 使 得 这 个 版 本 的 V is u a l C + + 比 以 前 版 本 更 为 友 好 本 章 的 后续 部 分 我 将 全 部 用 于 介 绍 V is u a l C + + 的 其 它 新 特 性
V is u a l C + + 也 是 编 写 A c tiv e X 控 件 以 及 像 IS A P I In te rn e t 服 务 器 应 用 程 序 接口 扩 展 和 IS A P I 过 滤 器 这 样 针 对 IIS 的 专 用 代 码 的 理 想 编 程 环 境 即 使 对 属于 快 速 应 用 程 序 开 发 环 境 中 的 应 用 程 序 编 程 来 说 也 没 有 人 愿 意 花 时 间 从 In te r- ne t 上 下 载 一 个 巨 型 控 件 也 同 样 没 有 人 愿 意 让 慢 速 的 过 滤 器 加 重 W e b 服 务 器的 负 担 V is u a l C + + 可 以 生 成 人 们 真 正 想 要 的 简 短 可 执 行 文 件 另 外 V is u a l C + + 提 供 的 额 外 灵 活 性 也 使 得 编 写 这 些 类 型 的 应 用 程 序 更 加 容 易 些 本 书 中 我 们 将花 些 时 间 来 研 究 A c tiv e X 控 件 因 此 这 里 我 就 不 再 多 讲 了 我 还 为 使 用 W e b 服务 器 的 人 们 准 备 了 几 个 IS A P I 扩 展 和 IS A P I 过 滤 器 的 示 例
V is u a l C + + 擅 长 的 另 一 领 域 是 数 据 库 编 程 我 并 不 是 说 要 使 用 V isu a l C + + 编写 一 个 功 能 完 备 的 仓 储 控 制 系 统 — — 那 样 确 实 要 花 去 很 长 的 时 间 然 而 In te rn e t 用 户 也 确 实 需 要 访 问 数 据 库 管 理 者 那 里 的 数 据 V is u a l C + + 能 够 在 不 比 RA D 语言 多 多 少 编 程 的 情 况 下 提 供 快 速 的 数 据 库 访 问
1 . 1 为 什 么 要 用 Vi su al C + +
我 们 已 经 研 究 了 作 为 编 程 语 言 为 什 么 要 使 用 C+ + 的 一 般 性 问 题 然 而 对你 想 生 成 W ind ow s 应 用 程 序 时 为 什 么 要 使 用 V is u a l C + + 却 谈 论 得 不 多 最 基 本的 原 因 很 好 理 解 由 于 M ic ros oft 是 W ind ow s 的 生 产 厂 商 那 里 的 人 们 当 然 最清 楚 地 知 道 该 操 作 系 统 内 部 的 东 西 是 如 何 运 行 的 在 M F C M ic ros oft 基 础 类 库 的 W ind ow s A P I 钩 子 中 你 会 找 到 这 些 内 幕 知 识
V is u a l C + + 还 提 供 了 许 多 在 其 它 产 品 中 或 许 找 不 到 的 特 性 尽 管 你 可 以 通 过构 建 自 己 的 工 具 来 克 服 其 它 产 品 存 在 的 任 何 缺 点 但 为 什 么 非 要 从 头 造 车 轮 呢 本 书 中 我 们 讨 论 最 多 的 两 个 特 性 是 数 据 库 编 程 和 A c tiv e X 编 程 两 者 都 包 括 控件 和 文 档 我 们 还 将 讲 述 与 In te rn e t 相 关 的 主 题 — — 比 如 IS A P I— — 以 及 新 的 应用 类 型 比 如 基 于 HT M L 的 应 用 V is u a l C + + 让 你 能 够 在 一 个 产 品 中 访 问 所 有这 些 技 术 而 无 须 购 买 第 三 方 的 产 品
持 久 性 是 使 用 V is u a l C + + 的 另 一 个 原 因 与 我 聊 过 天 的 一 些 程 序 员 关 心 计算 机 界 某 些 公 司 的 未 来 他 们 为 这 些 公 司 以 后 不 能 对 其 产 品 提 供 支 持 而 深 感 担忧 开 发 人 员 不 仅 今 天 需 要 而 且 未 来 也 需 要 得 到 强 有 力 的 支 持 由 于 C+ + 的每 种 实 现 都 存 在 一 些 细 微 的 差 别 特 别 是 在 你 使 用 厂 商 提 供 的 特 有 特 性 的 情 况下 你 的 应 用 程 序 确 实 与 开 发 工 具 产 品 的 命 运 联 系 在 一 起 了 我 们 可 以 负 责 地说 在 不 远 的 将 来 M ic ros oft 不 会 跑 到 哪 儿 去 — — 使 用 它 的 产 品 就 意 味 着 你 总 可以 升 级 到 更 好 的 产 品 当 然 要 在 这 些 产 品 发 行 的 时 候
1 .2 本 版 Vi su al C + + 的 新 特 性
近 来 软 件 开 发 界 流 传 的 一 个 词 是 In te rn e t 你 现 在 见 到 的 每 个 产 品 都 具 备 某些 与 In te rn e t 相 关 的 小 玩 意 儿 V is u a l C
-
- 也 不 例 外 在 本 书 中 我 们 将 考 察 与In te rn e t 相 关 的 新 特 性 和 升 级 特 性 表 1 .1 列 出 了 V is u a l C + + 新 特 性 的 完 整 列 表并 显 示 了 哪 些 版 本 包 含 这 些 新 特 性 显 然 企 业 版 包 含 的 特 性 最 完 整 在 随后 的 段 落 中 你 会 找 到 V is u a l C + + In te rn e t 特 有 特 性 的 概 览 从 而 决 定 V is u a l C + + 如 何 最 佳 地 来 满 足 你 的 In te rn e t 桌 面 以 及 数 据 库 编 程 的 需 要
表 1 . 1 Vi su al C + + 版本之间 特性比较
特 性 |
学 习 版 标 准版 |
专业版 |
企业版 |
---|---|---|---|
活动模板 库 AT L |
X 1 |
X |
X |
应用分发 许可 |
X |
X |
X |
A ppW iz a rd 和数据源 |
X |
X |
X |
通过 O LE - D B 进行的 AS A 4 0 0 数据库访问 |
X |
||
A u to C o m p le tio n 自动完 成语 句 |
X |
X |
X |
客户 / 服务器应 用开发 |
\ 2 |
\ |
X |
续 表
代码优化 和剖析器 |
X | X | |
---|---|---|---|
创建定制 化应用向导 |
X | X | |
数据绑定 控件 R e m o te D a ta |
X | X | |
扩展的存 储过程向导 |
X | ||
In s ta llS h ie ld |
X | X | |
In te rn e t 信息服务 器 IIS 4 .0 |
X | ||
M F C 数据绑定 |
X | X | |
M F C 数据库类 DAO ODB C 以 及文件 I/ O |
X |
X | X |
M F C 数 据 库 类 O LE - D B 和 ADO 也称 做 O LE - D B 模板 |
X | X | |
M icro s o f t T ran s a ctio n S e rv er M T S |
X | ||
代理服务 器 |
X | ||
远程自动 化部件 |
X | ||
远程数据 对象 RD O |
X | X | |
SN A 服务器 |
X | ||
SQ L 数据库工 具 |
X | X | |
SQ L 编 辑 调 试 以 及 存 储 过 程 调 试 |
X |
续 表
S Q L S e rv e r 6 .5 D e ve lo p e r 版和服务 包 3 |
X | ||
---|---|---|---|
静态链接 M F C 库 |
X |
X | |
系统管理 服务器 SM S |
X | ||
TS Q L 调试 |
X | ||
可视化数 据库工具 |
\ |
X | |
可视化建 模器 |
X | ||
V is u al S o u rceS a fe 版本控 制 |
X | ||
V isu a l S tu d io E n te rp r is e E d itio n VS E F 解决方 案教程 |
X |
1 X 完全 兼容
2 \ 部分 兼容
/G Z 编 译 器 选 项 在 调 试 模 式 下 捕 获 发 行 版 本 中 的 错 误
你 曾 经 遇 到 过 在 你 的 发 行 版 中 碰 到 了 运 行 错 误 但 在 调 试 模 式 错 误 又 消 失得 无 影 无 踪 的 情 况 吗 /G Z 编 译 器 选 项 正 是 用 于 帮 助 你 排 除 这 类 错 误 的 法 宝 该 编 译 选 项 允 许 你 使 用 /O 1 /O 2 /O x 或 /O g 优 化 开 关 从 而 找 出 发 行 版 错 误 的根 源 然 而 这 时 V is u a l C + + 依 然 对 代 码 中 任 何 以 #pra g m a 开 始 的 语 句 进 行 优化 这 就 是 说 有 可 能 不 会 找 出 所 有 的 优 化 缺 陷 除 此 之 外 /G Z 编 译 器 选 项还 将 完 成 下 述 三 项 任 务
自 动 初 始 化 局 部 变 量 V is u a l C + + 将 自 动 把 局 部 变 量 初 始 化 为 值
O x C C 这 样 你 就 会 更 快 地 找 出 未 初 始 化 的 变 量 该 选 项 还 会 以 C 4700
这 样 你 就 会 更 快 地 找 出 未 初 始 化 的 变 量 该 选 项 还 会 以 C 4700 或 C 4701
警 告 信 息 让 你 找 到 未 正 常 引 用 的 变 量
函 数 指 针 调 用 栈 有 效 性 检 查 V is u a l C + + 检 查 每 个 函 数 确 保 函 数 正 常地 使 用 堆 栈 函 数 退 出 时 检 查 ES P 寄 存 器 的 值 以 确 保 与 函 数 进 入 时 的值 相 同 这 种 检 查 让 你 能 够 发 现 在 使 用 函 数 指 针 调 用 函 数 时 被 调 用 函数 期 待 的 清 理 堆 栈 方 式 与 调 用 函 数 提 供 的 清 理 堆 栈 方 式 之 间 的 不 匹 配 情况
调 用 堆 栈 有 效 性 检 查 V is u a l C + + 在 每 个 调 用 结 束 时 检 查 堆 栈 指 针 ES P 寄 存 器 以 保 证 该 指 针 没 有 发 生 变 化 这 种 检 查 让 你 能 够 发 现 内 联 汇编 例 程 或 函 数 调 用 中 不 匹 配 的 错 误
_ _ 强 制 内 联 关 键 字
强 制 内 联 关 键 字 在 V is u a l C + + 的 前 一 个 版 本 中 已 经 提 供 在 这 个 版 本 中 功能 又 进 一 步 得 到 了 增 强 通 过 把 被 调 用 函 数 直 接 展 开 到 调 用 函 数 内 部 的 方 法内 联 函 数 避 免 了 函 数 调 用 的 消 耗 使 用 内 联 函 数 可 以 加 快 应 用 程 序 的 运 行 速 度然 而 不 幸 的 是 内 联 代 码 也 增 加 了 可 执 行 代 码 的 长 度 原 因 在 于 每 当 内 联 函 数被 调 用 时 都 要 嵌 入 到 调 用 函 数 中
正 常 情 况 下 V is u a l C + + 要 对 内 联 函 数 进 行 成 本 分 析 以 确 定 使 用 内 联 方 式增 加 的 代 码 长 度 是 否 能 够 得 到 相 应 的 速 度 优 势 在 两 种 情 况 下 V is u a l C + + 按正 常 方 式 创 建 内 联 函 数 的 独 立 副 本 并 以 函 数 方 式 而 不 是 内 联 方 式 调 用 它 递 归函 数 调 用 和 在 转 换 单 元 其 它 地 方 引 用 的 函 数
_ _ 强 制 内 联 关 键 字 通 知 V is u a l C + + 不 执 行 正 常 的 成 本 分 析 并 且 总 把 内 联 函数 编 译 成 内 联 代 码 换 句 话 说 程 序 员 负 责 考 虑 某 些 情 况 下 比 如 递 归 函 数 调用 可 能 产 生 极 大 规 模 代 码 的 问 题 因 此 在 使 用 这 个 新 的 关 键 字 时 要 十 分 小心 确 保 代 码 的 规 模 保 持 在 合 理 的 范 围 内
即 使 使 用 了 _ _ 强 制 内 联 关 键 字 在 某 些 情 况 下 编 译 程 序 依 然 不 生 成 内 联 代码 例 如 使 用 /O b 0 命 令 行 开 关 调 试 模 式 的 一 个 开 关 就 不 生 成 内 联 代 码不 能 生 成 内 联 代 码 的 另 一 种 情 况 是 被 调 用 函 数 使 用 了 变 长 参 数 表 无 论 什 么 情况 下 当 编 译 器 不 能 生 成 内 联 代 码 时 它 都 会 向 你 发 出 第 一 级 的 警 告 信 息 编号 为 4714
ADO 数 据 绑 定
M ic ros oft 不 断 地 努 力 改 进 其 编 程 语 言 产 品 的 数 据 访 问 能 力 ADO A c tiv e X D a ta O b je c t A c tiv e X 数 据 对 象 代 表 了 提 供 数 据 访 问 的 一 条 新 的 途 径 它 通 过把 数 据 绑 定 A c tiv e X 控 件 与 ADODC AD O D a ta C o n tro l ADO 数 据 控 件 结合 起 来 来 实 现 ADODC 作 为 数 据 源 定 义 了 要 显 示 信 息 的 存 储 位 置 和 数 据 访 问需 求 需 要 为 ADODC 提 供 六 段 信 息 O LE - D B 提 供 者 的 名 称 比 如 SQ L Se rv e r DS N 像 在 控 制 面 板 的 OD B C 设 置 中 那 样 指 定 的 数 据 源 名 称 用 户 名 保 密字 记 录 源 通 常 是 个 SQ L 查 询 以 及 连 接 字 符 串 A c tiv e X 控 件 用 于 显 示 数据 源 的 内 容
与 以 前 的 数 据 库 访 问 方 法 相 比 AD O 有 数 项 优 点 下 面 就 为 你 介 绍 这 些 优
点
独 立 地 创 建 对 象 你 不 再 需 要 必 须 遵 循 对 象 的 层 次 这 一 特 性 允 许 你 只创 建 所 需 要 的 对 象 从 而 减 少 了 内 存 需 求 并 加 快 了 应 用 程 序 的 运 行 速度
成 批 更 新 代 替 把 每 次 更 新 都 发 送 给 服 务 器 你 可 以 在 本 地 内 存 中 收 集这 些 更 新 然 后 一 次 将 所 有 更 新 都 发 送 给 服 务 器 这 样 我 们 就 改 进 了 应 用程 序 的 性 能 原 因 在 于 可 以 在 后 台 进 行 更 新 并 降 低 了 网 络 的 负 载
存 储 过 程 存 储 过 程 作 为 数 据 库 管 理 器 的 一 部 分 驻 留 在 服 务 器 上 并 且能 够 在 指 定 数 据 集 上 完 成 特 定 的 任 务 ADO 支 持 使 用 带 有 输 入 / 输 出 参数 和 返 回 值 的 存 储 过 程
多 种 游 标 类 型 从 本 质 上 讲 游 标 指 向 当 前 要 操 作 的 数 据 理 论 上 说你 甚 至 可 以 使 用 特 定 的 后 台 游 标
返 回 行 数 限 制 你 只 得 到 能 够 满 足 用 户 实 际 数 据 需 求 的 数 据 量
多 记 录 集 对 象 该 功 能 支 持 操 作 存 储 过 程 或 批 处 理 过 程 返 回 的 多 个 记 录集
自 由 线 索 化 对 象 增 强 了 W e b 服 务 器 的 功 能
有 两 种 数 据 绑 定 模 型 可 用 于 A c tiv e X 控 件 第 一 个 模 型 是 简 单 的 数 据 绑 定它 允 许 使 用 像 文 本 框 这 样 的 A c tiv e X 控 件 显 示 一 条 记 录 的 一 个 字 段 第 二 个 模型 是 复 杂 的 数 据 绑 定 它 允 许 使 用 像 网 格 这 样 的 A c tiv e X 控 件 同 时 显 示 多 条 记录 的 多 个 字 段 复 杂 的 数 据 绑 定 也 要 求 A c tiv e X 控 件 管 理 要 显 示 哪 些 记 录 和 哪些 字 段 这 是 简 单 数 据 绑 定 时 ADODC 通 常 要 完 成 的 任 务
V is u a l C + + 本 身 带 了 一 些 支 持 AD O 的 A c tiv e X 控 件 其 中 包 括
D a ta G rid
D a ta C o m b o D a ta L is t
H iera rch ic al F lex G r id D a te a nd T im e P ic k e r
ATL 复 合 控 件
这 一 特 性 让 你 能 够 按 自 己 的 方 式 使 用 其 它 控 件 创 建 出 新 的 AT L A c tiv e T e m p late L ib ra r y 活 动 模 板 库 控 件 定 制 这 样 的 控 件 时 要 打 开 一 个 对 话 框 然 后在 对 话 框 中 填 入 窗 口 和 A c tiv e X 控 件 该 对 话 框 占 据 了 新 控 件 的 整 个 客 户 区
使 用 这 两 个 向 导 之 一 能 够 创 建 AT L 复 合 控 件 A TL C O M A p p W iz a rd 或 AT L O b ject W iza rd
绝 大 多 数 程 序 员 使 用 这 项 技 术 的 原 因 是 它 能 够 创 建 一 个 作 为 单 一 A c tiv e X 控 件 显 示 的 窗 体 例 如 如 果 你 现 在 正 要 求 用 户 下 载 一 个 有 许 多 控 件 的 窗 体 来显 示 W e b 页 面 那 么 使 用 AT L 复 合 控 件 可 以 减 低 下 载 任 务 的 复 杂 性 当 你 修改 了 AT L 复 合 控 件 时 用 户 只 需 要 下 载 一 个 控 件 也 就 可 以 了 这 种 下 载 方 式 不仅 加 快 了 控 件 的 下 载 速 度 而 且 也 降 低 了 下 载 失 败 的 可 能 性 要 么 下 载 整 个 控件 要 么 不 下 载 — — 而 不 会 下 载 部 分 窗 体
AutoComple tion
A u to C o m p le t io n 特 性 帮 助 你 完 成 C+ + 头 文 件 和 源 代 码 文 件 中 的 语 句 应 用该 功 能 时 你 会 看 到 一 个 带 有 完 成 代 码 行 可 能 选 项 的 列 表 框 例 如 考 虑 下 面的 代 码
C S trin g o M y S trin g ; o M y S trin g .
当 你 在 oM y S tr in g 后 输 入 圆 点 时 你 就 会 看 到 一 个 包 含 了 C S trin g 对 象 的 各种 方 法 和 属 性 的 列 表 框 此 时 你 可 以 向 下 滚 动 列 表 框 找 到 所 需 的 属 性 或 方法 后 单 击 该 属 性 或 方 法 相 应 的 属 性 或 方 法 就 会 填 充 到 原 点 后 面 当 然 也 可 以输 入 你 要 使 用 的 方 法 或 属 性 的 前 几 个 字 母 列 表 框 会 随 着 输 入 过 程 的 进 行 而 朝希 望 的 名 称 滚 动 一 旦 你 选 择 了 某 个 方 法 或 属 性 V is u a l C + + 将 自 动 键 入 你 要使 用 的 属 性 或 方 法 的 名 称 这 样 就 大 大 减 少 了 文 字 输 入 的 时 间 从 而 有 更 多 的时 间 编 写 代 码
技 巧 如 果 你 的 环 境 中 丢 失 了 AutoComple tion 列 表 框 那 么 在 该 列 表 框 先前 出 现 过 的 地 方 右 击 然 后 从 上 下 文 菜 单 中 选 择 List Members 菜 单项 这 个 列 表 框 就 会 重 新 显 示 在 你 的 面 前
现 在 假 定 你 正 在 查 看 A u to C o m p le t io n 列 表 框 但 还 不 能 肯 定 C S trin g 对 象 的A n s i T o O e m () 方 法 存 在 的 限 制 如 果 你 加 亮 这 个 列 表 项 并 把 鼠 标 指 针 放 置 到 这 个列 表 项 上 就 会 看 到 一 个 气 球 帮 助 它 告 诉 你 该 方 法 最 多 可 处 理 255 个 字 符
这 种 气 球 型 帮 助 正 是 V is u a l C + + 的 另 一 个 新 特 性 称 做 文 档 注 释 D o c C o m - m e n t
文 档 注 释 并 不 仅 仅 是 V is u a l C + + 软 件 包 的 一 部 分 你 也 可 以 把 这 样 的 注 释添 加 到 你 的 函 数 和 变 量 上 方 法 很 简 单 你 所 要 做 的 就 是 或 者 在 函 数 或 变 量 说明 的 前 面 加 上 一 条 注 释 或 者 把 注 释 放 置 到 变 量 或 函 数 说 明 的 同 一 行 上 利 用这 个 特 性 你 可 以 向 其 他 人 提 供 函 数 或 变 量 的 各 种 信 息 显 然 你 不 会 希 望 把 这个 注 释 弄 得 很 大 M ic ros oft 把 文 档 注 释 的 长 度 限 制 为 12 行 对 绝 大 多 数 情 况来 说 在 这 个 限 制 下 也 足 够 使 用 了
文 档 注 释 并 不 局 限 于 在 A u to C o m p le t io n 列 表 框 中 使 用 把 鼠 标 指 针 放 置 到某 个 变 量 或 函 数 上 你 会 看 到 在 与 A u to C o m p le t io n 列 表 框 中 显 示 的 相 同 的 文 档注 释 气 球 正 如 你 所 看 到 的 文 档 注 释 是 为 你 的 应 用 程 序 提 供 连 续 文 档 的 迅 捷方 法 并 且 也 使 得 阅 读 你 的 代 码 的 其 他 人 更 方 便 地 理 解 代 码
改 进 的 ClassView 和 WizardBar
M ic ros oft 为 C la ssV ie w 和 W iz a rd B a r 都 提 供 了 一 些 新 特 性 下 面 的 列 表 予以 介 绍
删 除 成 员 函 数 现 在 不 需 要 你 做 许 多 工 作 就 可 以 删 除 成 员 函 数 了 你 所必 须 完 成 的 所 有 任 务 就 是 把 光 标 放 置 到 成 员 函 数 内 部 然 后 从 W iz a rd B a r A c tio n 下 拉 列 表 框 中 选 择 D e le te 或 在 C la ssW iz a rd 对 话 框 的 M e s s a g e M a p s 选 项 卡 中 选 择 D e le te F u n c tio n 无 论 使 用 哪 种 方 法 V is u a l C + + 都 从 头 文件 中 删 除 函 数 声 明 并 在 源 代 码 中 注 解 掉 函 数 体 这 种 处 理 方 式 让 你 在 需
要 被 删 除 掉 的 函 数 时 可 以 轻 易 地 恢 复 该 函 数
转 移 到 对 话 框 编 辑 器 这 个 功 能 只 在 创 建 对 话 框 风 格 的 应 用 程 序 时 可 以使 用 选 择 包 含 所 需 对 话 框 的 类 然 后 在 W iz a rd B a r A c tio n 下 拉 列 表 框中 选 择 G o to D ia lo g E d ito r 选 项
新 窗 体 向 你 的 工 程 中 添 加 新 的 窗 体 你 会 看 到 一 个 N e w F o rm 对 话 框在 这 个 对 话 框 中 选 择 窗 体 名 窗 体 的 基 类 最 常 用 的 基 类 包 括 Cd a o R e - co rd V ie w C fo rm V ie w CD ia lo g 以 及 CR e c o rd V ie w 以 及 资 源 编 号基 类 的 选 择 部 分 依 赖 于 你 正 创 建 的 应 用 程 序 的 类 型 和 使 用 应 用 程 序 向 导过 程 中 所 做 的 各 种 选 择 某 些 情 况 下 你 也 将 可 以 选 择 自 动 化 方 式 并 提供 文 档 的 模 板 信 息 当 某 些 选 项 当 前 不 能 使 用 时 V is u a l C + + 会 把 这 些选 项 变 成 灰 色 方 式 显 示
跟 踪 空 类 现 在 W iz a rd B a r 可 以 跟 踪 所 有 类 即 使 那 些 没 有 成 员 函 数 的类 也 一 样 能 够 跟 踪 如 果 你 选 择 了 某 个 没 有 成 员 函 数 的 类 那 么 W iz a rd - B a r 的 M e m b e rs 组 合 框 中 将 显 示 N o M e m b ers - C reate N e w C las s 缺省 的 W iz a rd B a r 动 作 是 向 空 类 中 添 加 一 个 新 的 成 员
注 使 用 Insert | N ew Form 命 令 也 可 以 打 开 New Form 对 话 框
命 令 行 参 数
V is u a l C + + 提 供 了 一 个 崭 新 的 M S D E V 实 用 程 序 利 用 这 个 实 用 程 序 你 可以 直 接 从 命 令 行 来 编 译 工 程 而 无 须 首 先 移 出 M AKE 文 件 然 后 再 使 用 NM AKE 实 用 程 序 来 完 成 编 译 M S D E V 实 用 程 序 的 语 法 为
M S D E V < F i le na m e > [/ M A K E " < P roje c t N a m e > - < C onfigu ra t ion N a m e > |
AL L " ] [/ R E B U IL D / C L E AN / NOR E C UR S E / O UT < L o g F i le > / U S E E N V ]
你必须提 供 D S P 工程 或 DS W 工作区 文件名 下面的文 字描述 了可选 的命令行开关
/M A K E 该 选 项 让 指 定 编 译 时 使 用 的 工 程 和 配 置 工 程 名 P ro ject N a m e 总 是 工 程 创 建 过 程 中 你 为 工 程 起 的 名 称 配 置 名 C onfigura tio n N a m e 既 可 以 是 像 W in3 2 D e bug 这 样 的 特 定 名 称 也 可 以 是 所 有 可 用的 配 置 使 用 AL L 关 键 字 V is u a l C + + 支 持 在 一 行 上 使 用 多 个 / M AKE 参 数 因 此 你 可 以 创 建 任 意 多 个 配 置
/R E B U IL D 在 开 始 编 译 前 首 先 清 除 所 有 中 间 文 件 然 后 建 立 新 的 中 间文 件 这 种 方 式 保 证 进 行 完 整 编 译
/C L E A N 在 开 始 编 译 前 首 先 清 除 所 有 中 间 文 件 但 并 不 重 建 中 间 文 件
/ N OR E C UR S E 编 译 当 前 工 程 但 并 不 编 译 与 该 工 程 相 关 的 其 他 工 程
/O U T < L o g F ile > 把 屏 幕 输 出 重 定 向 到 一 个 记 录 文 件 中 利 用 该 记 录 文件 可 以 分 析 编 译 中 发 现 的 错 误 并 进 行 相 应 校 正
/U S E E N V 忽 略 DS W 或 DS P 文 件 中 的 too ls . op tions . d ire c to r ie s 设 置 并用 当 前 环 境 中 的 设 置 进 行 替 代 这 样 就 可 以 不 用 重 新 打 开 V is u a l C + + 而覆 盖 环 境 设 置 但 这 种 做 法 也 意 味 着 可 能 会 产 生 错 误
全 面 改 进 的 编 译 器
编 译 大 型 PC H 文 件 的 工 程 将 花 费 更 少 的 时 间 虽 然 你 会 注 意 到 对 小 型 工 程速 度 的 改 进 但 对 使 用 大 型 PC H 文 件 的 工 程 来 说 这 种 改 进 更 加 明 显
延 迟 加 载 移 入
正 常 情 况 下 有 两 种 方 式 使 用 DL L 可 以 让 应 用 程 序 自 动 加 载 DL L 也 可以 根 据 需 要 手 工 地 加 载 和 卸 载 DL L 延 迟 加 载 特 性 为 你 提 供 了 第 三 种 选 择 它允 许 应 用 程 序 在 需 要 时 自 动 加 载 DL L 这 就 是 说 如 果 用 户 未 要 求 使 用 某 种 服务 — — 比 如 说 你 的 字 处 理 应 用 程 序 中 的 拼 写 检 查 — — 那 么 系 统 就 不 会 加 载 相 应的 DL L
对 程 序 员 来 说 使 用 这 一 特 性 并 不 需 要 做 多 少 工 作 你 要 完 成 的 所 有 任 务就 是 在 链 接 应 用 程 序 时 加 上 / D E L AY L O AD 命 令 行 开 关 并 把 DE L AY IM P . L IB 添加 到 链 接 文 件 列 表 中
动 态 HTML
新 的 M F C 类 CH T M L 允 许 你 把 动 态 HT M L DHT M L 视 图 添 加 到 你 的 应用 程 序 中 这 个 类 真 正 的 功 能 就 是 在 不 需 要 多 做 多 少 编 程 的 情 况 下 可 以 把 W e b 浏 览 器 加 入 到 应 用 程 序 中 显 然 由 于 V is u a l C + + 是 微 软 的 产 品 你 的 应 用 程序 中 的 W e b 浏 览 器 将 是 In te rn e t E xp lore r 4 特 性 的 翻 版 这 个 特 性 让 你 能 够 以 对用 户 近 乎 透 明 的 方 式 把 桌 面 应 用 和 In te rn e t 应 用 混 合 在 一 起
动 态 语 法 分 析
随 着 向 应 用 程 序 中 键 入 新 的 类 函 数 以 及 变 量 信 息 C la ssV ie w 现 在 能 够 自动 进 行 更 新 这 样 我 们 随 时 都 可 以 看 到 应 用 程 序 中 的 变 化 而 无 须 等 待 将 它 们 保存 到 源 文 件 中 这 个 特 性 也 意 味 着 像 W iz a rd B a r 和 C la ssW iz a rd 这 样 的 部 件 总 是最 新 的
注 释 这 个 特 性 现 在 还 存 在 一 些 问 题 微 软 许 诺 在 该 产 品 发 行 时 这 些 问 题将 得 到 纠 正 例 如 某 些 输 入 错 误 将 会 导 致 Visual C++ 不 正 确 地 猜测 你 的 意 图 结 果 造 成 了 I D E 的 死 循 环 在 所 有 情 况 下 重 新 启 动 I D E 就 会 清 除 这 样 的 问 题
编 辑 和 继 续 特 性
编 辑 和 继 续 特 性 让 你 能 够 在 调 试 应 用 程 序 时 对 应 用 程 序 做 些 小 的 改 动 而无 须 从 头 重 建 工 程 这 个 特 性 不 仅 让 我 们 能 够 进 行 更 快 速 的 调 试 而 且 也 可 以对 应 用 程 序 执 行 如 果 — — 那 么 类 型 的 分 析
使 用 编 辑 和 继 续 特 性 时 也 存 在 一 些 限 制 如 果 修 改 的 代 码 超 过 了 编 辑 和 继续 特 性 能 够 完 成 的 范 围 那 么 V is u a l C + + 简 单 地 提 示 你 重 建 工 程 下 面 的 列 表给 出 了 不 能 使 用 编 辑 和 继 续 特 性 的 一 般 原 则
-
头 文 件
-
全 局 / 静 态 数 据
-
类 定 义 和 函 数 原 型
-
引 入 新 的 变 量 类 型
-
例 外 处 理 模 块
编 辑 和 继 续 特 性 在 缺 省 情 况 下 是 打 开 的 因 此 使 用 该 特 性 时 不 需 要 做 任 何特 殊 的 工 作 如 果 想 关 闭 该 特 性 那 么 使 用 T oo ls | O p t ions 命 令 来 显 示 O p tions 对 话 框 选 择 D e bug 选 项 卡 不 选 中 D e bug C o m m a nds Invoke E d i t a nd C o n t inue D e bugg ing 选 项 当 打 开 或 关 闭 该 特 性 后 需 要 完 整 地 重 建 工 程
扩 展 存 储 过 程 向 导
存 储 过 程 让 你 能 够 以 某 种 方 式 操 作 数 据 库 中 的 数 据 并 把 结 果 输 出 给 用 户
V is u a l C + + 提 供 了 一 个 新 的 向 导 帮 助 你 创 建 SQ L Se rv e r 的 存 储 过 程 这 些 存 储过 程 使 用 了 带 有 名 称 为 E x te nde d s tore d proc e dure 扩 展 存 储 过 程 的 函 数 的 CO M 接 口 当 我 们 在 SQ L Se rv e r 上 注 册 了 扩 展 存 储 过 程 DL L 后 就 可 以 访 问 使 用标 准 CO M 接 口 检 索 出 的 数 据 了
新 的 调 试 特 性
V is u a l C + + 提 供 了 丰 富 的 新 调 试 特 性 这 些 特 性 让 你 能 够 更 容 易 地 找 出 应 用程 序 中 存 在 的 缺 陷 表 1 .2 列 出 了 所 有 这 些 新 特 性 并 给 出 了 每 个 特 性 的 简 单描 述
表 1 .2 新调试特 性概览
特性 |
描述 |
|||||
---|---|---|---|---|---|---|
VA R IA N T 和 GU ID 的 自 动 扩展 |
AUT OE XP .DAT 自 动 扩 展 文 件 包 含 了 以 更 有 意 义 方式显示 VAR IA NT 和 GU ID 的新规则 AUT OE XP .DAT 文件放 置 在 硬 盘 的 P rog ra m F ile s \ M ic ros oft V is u a l S tu- d io \ C o m m o n \M S D e v 9 8 \B in 目 录 中 例 如 VAR IA NT 现 在将 以 实 际 包 含 数 据 的 数 据 类 型 方 式 显 示 字 符 串 就 显 示 为 字符串 另外 V is u a l C + + 同时显示 VAR IA NT 类型以及 相应的值 GU ID 并不一 定要显 示为一 串数字 V is u a l C + + 将努力 在 注册表中 查找 GU ID 的名称并 以名称进行显 示 |
|||||
调 试 器 格 式 化符号 |
V is u a l C + + 支持完整 的新调试器符 号 ,h r 像通用 CO M 返回值那 样显示 32 位结果或 出错代码比如 S_ O K 或 E _ NOT IM P L 如果它 不能显示精确 的出错值V is u a l C + + 将 试 图 把 返 回 值 转 换 成 像 N o t E n ou gh m e m o ry 这样的出 错信息 |
|||||
器 |
,m q |
让你以四 个四字方式显 示内存 |
以此 代替 |
64 |
位寄存 |
|
,s t 根据 AUT OE XP .DAT 文件中 U n ic o d e S tr in g s 设置值决定以 U n ic o d e 还是 ANS I 格式来显 示字符串 |
||||||
,w c 以解码的 W indo w s 类标志 W C _ c o n s ta n ts 来显示 数 值值 |
续 表
,w m 以解码的 W indow s 消息 值 W M _c on s ta n ts 来显示数值值 |
|
---|---|
反汇编输 出 |
在 反 汇 编 输 出 中 提 供 了 更 多 的 信 息 其 中 包 括 可 用 时 的符号信息 |
L o a d C O FF & Ex p o r ts |
该选 项 放 置在 O p t ions 对话 框的 D e b u g 选 项 卡 中 使 用T o o ls | O p t ions 命令可以 打开该对话框 这个选项 让你加载附加的调 试信息 这些 信息可以被不 是 V is u a l C + + 的其它编 译器使用 V is u a l C + + 使用 C ode V ie w 格式的调 试信息 例如 V isu a l B a sic 在 M S VB V M 5 0 .DB G 文件中提 供了通用对象 文件格式 CO F F 的调试信息 当 没有其它调试信 息 至少是 V is u a l C+ + 能够识别 的信息 可用时 移 出选项就发挥 作用了 V is u a l C+ + 将 加 载 每 个 DL L 移 出 表 的 内 容 并 将 其 转 换 成 用 于 调 试 目 的的符号 信息 |
寄 存 器 |
几 个 新 的 寄 存 器 将 帮 助 我 们 找 出 应 用 程 序 中 的 更 详 细 信息 T h re a d In fo rm a t io n B lo c k s T IB s 线程信 息块 伪寄存 器提 供 了 当 前 线 程 的 信 息 ER R 伪 寄 存 器 显 示 应 用 程 序 中 最 近一 次 发 生 错 误 的 错 误 代 码 该 寄 存 器 与 G e tL a s tE r ro r ( ) 函 数 调用完成相 同的任务 对 ER R 寄存器加 上 ,h r 修饰符后 的功能将显示 32 位的出错 代码 同时给 出像 N o t E n o u g h m e m o ry 这样的出错 信息 64 位 M M X 寄存器值 现在显示在 W a tc h 和 Q u ic k W a tc h 窗口中 在所有的 x86 机器上都 显示这些寄存 器 即使 |
这些机器 |
本身并不支持 M M X 指令 |
||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
未修饰符 号 |
简 单在 某 些 地 将包含可 |
地 说 这 个 特 性 表 示 你 不 会方 的 无 意 义 的 一 大 串 字 符 用时的参数信 息 |
再另 |
在外 |
函 |
数所 |
名有 |
中的 |
看函 |
到数 |
隐名 |
藏都 |
|
V _ T a b le 和数指针显 示 |
函 |
可 能 显示 其 |
时 函 数 指 针 和 虚 表 项 像 文中用参数来代 替 16 进制地址 |
本 |
项 |
符 |
号 |
化 |
的 |
那 |
样 |
OLE-DB 提 供 者 模 板
使 用 O LE - D B 提 供 者 模 板 可 以 开 发 O LE - D B 访 问 接 口 特 别 是 到 远 程 数 据库 的 连 接 该 模 板 并 不 完 成 什 么 神 奇 的 功 能 它 所 完 成 的 任 务 也 就 是 把 访 问O LE - D B 技 术 的 过 程 变 得 容 易 些 O LE - D B 是 微 软 最 新 的 数 据 库 技 术 它 用 于为 包 含 O LE - D B 提 供 者 的 数 据 库 管 理 系 统 DB M S 提 供 高 性 能 的 数 据 访 问
数 据 绑 定 控 件 的 资 源 编 辑 器 改 进
资 源 编 辑 器 R e s ourc e E d ito r 让 你 可 以 使 用 所 有 最 新 的 ADO 和 O LE - D B 技 术 来 创 建 与 数 据 库 的 连 接 你 需 要 使 用 新 型 的 ADODC 数 据 源 控 件 来 创 建 连接 另 外 还 需 要 使 用 新 型 与 ADO 兼 容 的 数 据 绑 定 控 件 显 示 数 据 这 条 规则 的 唯 一 例 外 情 况 是 简 单 的 绑 定 控 件 我 们 可 以 使 用 这 类 控 件 在 ADODC 和M S R D C M ic ros oft R e m o te D a ta C o n tro l 微 软 远 程 数 据 控 件 数 据 源 控 件 之 间内 部 交 换 数 据
对 DocObject 包 容 特 性 的 向 导 支 持
M F C 应 用 向 导 A p p W izard 在 第 三 步 中 包 含 了 一 个 新 的 选 项 该 选 项 只在 选 中 了 C on ta ine r 或 B o th C o n ta ine r a nd S e rv e r 复 合 文 档 特 性 选 项 后 才 有 效
利 用 D o cO b ject 包 容 特 性 同 时 打 开 A c tiv e D o c u m e n t C on ta ine r 选 项 你可 以 把 应 用 程 序 支 持 的 所 有 类 型 的 文 档 包 含 在 一 个 框 架 中 而 不 需 要 对 每 类 文档 分 别 创 建 不 同 类 型 的 框 架 如 果 想 准 确 地 感 受 一 下 这 种 技 术 到 底 如 何 工 作 那 么 就 请 看 一 看 M ic ros oft O f f ic e B inde r 吧 正 常 情 况 下 OL E 允 许 用 户 与 复 合文 档 中 的 一 个 对 象 进 行 交 互 而 D o cO b ject 包 容 技 术 让 用 户 能 够 在 一 个 框 架 中激 活 整 个 文 档 包 括 菜 单 工 具 条 以 及 其 它 所 支 持 的 特 性
WizardBar 性 能 增 强
当 资 源 编 辑 器 中 的 W iz a rd B a r 可 见 时 带 大 量 对 话 框 和 控 件 的 其 CL W 文件 很 大 工 程 通 常 慢 如 蜗 牛 M ic ros oft 已 经 采 取 措 施 改 进 了 这 项 特 性 的 性 能从 而 减 少 了 W iz a rd B a r 对 ID E 性 能 的 冲 击
1 .3 一 些 缺 陷
正 如 当 今 市 场 上 所 有 其 它 产 品 一 样 V is u a l C + + 也 存 在 一 些 并 不 能 像 所 期 待的 那 样 至 少 像 你 自 己 所 期 待 的 那 样 完 成 工 作 的 缺 陷 我 发 现 的 这 些 缺 陷 某些 人 将 它 们 称 做 臭 虫 或 遗 憾 的 变 化 中 没 有 哪 个 缺 陷 十 分 恐 怖 以 至 于 阻
止 了 你 的 工 作 但 它 们 依 然 令 人 讨 厌 M ic ros oft 或 许 正 要 发 行 V is u a l C ++ 6 . 0 的 一 个 或 多 个 补 丁 程 序 因 此 我 希 望 这 里 谈 论 的 一 些 缺 陷 在 你 读 到 本 文 时 就已 经 修 正 过 了 即 使 M ic ros oft 不 能 提 供 解 决 问 题 的 替 代 方 案 你 至 少 也 应 该 清醒 地 意 识 到 必 须 修 改 某 些 代 码 以 适 应 新 的 特 性
注 释 本 节 并 不 是 要 罗 列 Visual C++ 所 有 缺 陷 的 各 个 方 面 而 是 指 出 一些 明 显 的 问 题 以 及 避 开 这 些 问 题 的 方 法 但 愿 Microsoft 也 会 修 正 一些 深 层 次 不 明 显 隐 藏 的 缺 陷 — — 即 使 这 些 缺 陷 在 这 里 我 并 没 有 提到
你 首 先 会 注 意 到 的 一 件 事 是 In fo V ie w e r 已 经 被 一 个 非 集 成 基 于 M S D N M ic ros oft D e ve lope r N e tw ork 的 帮 助 所 取 代 虽 然 我 们 依 然 可 以 加 亮 某 个 命 令 后 得 到 相 应 的 帮 助 但 M S D N 的 非 集 成 特 性 也 就 意 味 着 由 外 部 程 序 提 供 该 帮助 这 也 说 明 了 现 在 需 要 更 多 的 内 存 来 获 取 帮 助 信 息 另 外 M S D N 的 查 找 能
力 与 已 经 熟 悉 的 In fo V ie w e r 相 比 简 直 不 可 同 日 而 语 M S D N 缺 少 许 多 In fo V iew er 提 供 的 选 项 并 且 基 于 M S D N 的 帮 助 还 存 在 其 它 许 多 问 题 其 中 最 主 要 的 问 题是 它 要 求 必 须 有 良 好 的 In te rn e t 连 接 总 而 言 之 你 会 发 现 V is u a l C + + 6 . 0 中 的帮 助 是 一 大 倒 退 — — 这 是 M ic ros oft 产 品 升 级 中 最 失 败 的 决 策 之 一
另 一 个 问 题 是 并 非 所 有 复 制 到 B in 文 件 夹 中 的 程 序 都 会 作 为 M ic ros oft V is u a l C+ + 6 . 0 文 件 夹 中 的 快 捷 方 式 显 示 在 S ta r t 开 始 菜 单 中 例 如 在 那 个 文 件夹 中 存 放 有 H e lp W o rk s hop 快 捷 方 式 但 却 没 有 H o ts pot E d itor 快 捷 方 式 本 书中 我 们 将 多 次 使 用 这 些 实 用 程 序 因 此 你 至 少 应 该 知 道 这 些 程 序 放 置 在 什 么地 方 之 后 你 就 可 以 把 它 们 添 加 到 W ind ow s 95 W ind ow s 98 或 W ind ow s N T 的
S ta r t 开 始 菜 单 中 了 再 说 一 句 虽 然 S ta r t 开 始 菜 单 缺 少 某 些 快 捷 方 式并 不 是 什 么 了 不 得 的 问 题 但 我 们 依 然 奇 怪 为 什 么 M ic ros oft 不 把 这 些 事 说 在 明处
也 许 部 分 原 因 是 由 于 2000 年 日 期 问 题 现 在 我 们 不 能 再 使 用 CO le D a te T im e 得 到 两 位 数 字 的 日 期 了 虽 然 该 类 可 以 接 收 两 位 数 字 的 日 期 但 随 后 对 像 G e t- M on th 或 G e tM in u te 这 样 的 成 员 函 数 的 调 用 将 导 致 失 败 这 样 对 作 为 程 序 员的 你 就 不 得 不 重 新 修 改 包 括 这 些 成 员 函 数 的 老 程 序 了 否 则 的 话 尽 管 编 写了 正 确 无 误 的 程 序 你 依 然 会 遇 到 神 秘 的 错 误 终 止 了 程 序 的 现 象
虽 然 界 面 本 身 并 不 存 在 自 身 的 缺 陷 但 界 面 依 然 让 使 用 多 国 语 言 的 人 们 感到 担 心 M ic ros oft 正 致 力 于 将 其 所 有 语 言 工 具 产 品 的 界 面 进 行 统 一 也 就 是 说除 语 言 细 节 之 外 都 是 一 致 的 这 样 开 发 人 员 几 乎 不 需 要 新 的 培 训 就 能 从 一 种 环境 迁 移 到 另 一 种 环 境 但 V is u a l C + + 却 是 例 外 它 到 现 在 还 依 然 保 持 着 一 付 老面 孔 虽 然 对 这 样 的 界 面 你 不 需 要 重 新 学 习 但 对 使 用 微 软 其 它 产 品 的 开 发 者来 说 他 们 在 使 用 V is u a l C + + 之 前 还 必 须 首 先 熟 悉 该 工 具 的 集 成 开 发 环 境 ID E 幸 运 的 是 微 软 计 划 在 不 久 的 将 来 改 变 这 种 状 况 至 少 该 公 司 中 与
我 交 流 过 的 人 们 是 这 样 说 的
1 .4 考 察 界 面 元 素
在 我 们 大 量 编 程 之 前 我 要 花 点 时 间 讲 述 一 下 D e ve lope r S tud io 的 界 面 这样 大 家 就 统 一 口 径 了 你 还 将 学 习 一 些 以 前 未 曾 用 到 过 的 新 特 性 例 如 我 们
要 考 察 一 下 工 具 条 并 介 绍 其 中 的 某 些 新 特 性 如 果 你 已 经 是 一 位 经 验 丰 富 的V is u a l C ++ 程 序 员 并 且 自 认 为 没 有 什 么 界 面 元 素 对 你 来 说 还 是 新 东 西 那 就随 意 跳 过 这 一 节 吧
MFC Studio 窗 口 元 素
当 使 用 V is u a l C + + 编 辑 程 序 时 你 可 以 把 V is u a l C + + 的 显 示 界 面 划 分 成 三块 功 能 区 工 具 条 视 图 以 及 编 辑 窗 口 每 个 功 能 区 都 可 以 独 立 于 其 它 功 能 区来 操 作 因 此 可 以 在 各 功 能 区 之 间 自 由 地 切 换 图 1 .1 显 示 了 典 型 编 辑 器 的显 示 情 况 以 及 这 三 个 功 能 区 的 位 置
注 释 本 节 中 介 绍 各 种 窗 口 视 图 以 及 工 具 条 随 后 的 各 节 中 介 绍 它 们 的详 细 信 息
经 常 用 到 的 窗 口 有 两 种 类 型 文 本 窗 口 和 资 源 窗 口
图 1 .1 显 示 了 一 个 典 型 的 文 本 窗 口 无 论 什 么 时 候 当 你 要 修 改 代 码 或 编 辑文 本 文 件 时 看 到 的 就 是 这 类 窗 口
V is u a l C + + 通 过 各 种 手 段 来 简 化 编 码 工 作 文 本 窗 口 中 首 先 注 意 到 的 东 西是 代 码 的 颜 色 例 如 关 键 字 的 缺 省 颜 色 为 蓝 色 而 注 释 的 颜 色 为 绿 色 这 种方 式 的 彩 色 代 码 让 你 能 够 轻 易 地 分 辨 出 代 码 的 性 质
图 1 .1 D e v e lo pe r S tud io 的屏 幕可 以划 分成三 个功 能区
本 窗 口 的 左 边 缘 是 一 竖 条 这 是 V is u a l C ++ 放 置 各 种 符 号 的 地 方 你 甚 至会 看 到 它 通 过 颜 色 来 区 分 数 据 和 代 码 控 制 区 例 如 当 我 们 在 代 码 中 设 置 了 断
点 后 V is u a l C ++ 就在 这个 竖条 上显 示断 点符 号 当该 断点 可用 时 断点 符号 为红色 否则 断点符号为白色
文 本 框 的 各 个 区 域 中 都 可 以 通 过 右 击 来 显 示 一 个 上 下 文 相 关 菜 单 上 下 文菜 单 中 包 含 了 可 以 进 行 基 本 操 作 的 各 种 选 项 与 D e ve lope r S tud io 界 面 的 其 它 地方 不 同 这 些 菜 单 不 能 直 接 进 行 修 改 下 图 是 右 击 文 本 编 辑 器 时 可 能 出 现 的 上下 文 菜 单 的 一 个 示 例
请 注 意 你 可 以 像 使 用 任 何 编 辑 器 那 样 剪 切 复 制 或 粘 贴 文 本 由 于 我 已经 加 亮 了 # inc lude 文 件 项 因 此 上 下 文 菜 单 提 供 了 一 个 打 开 该 文 件 的 机 会 如果 当 前 工 程 中 还 没 有 包 含 该 文 件 那 么 使 用 In s e r t F ile in to P ro je c t 菜 单 项 就 可 以把 该 文 件 包 含 到 工 程 中 Ch e c k O u t 菜 单 项 用 于 管 理 小 组 型 工 程 通 过 它 可 以 获取 对 文 件 的 控 制 以 便 编 辑 文 件 接 下 来 的 三 个 菜 单 项 可 以 查 找 当 前 项 更 详 细的 信 息 例 如 使 用 P a ra m e te r H e lp 菜 单 项 可 以 得 到 函 数 调 用 的 参 数 信 息 A u to C o m p le te 协 助 你 完 成 函 数 调 用 的 键 入 后 面 的 两 个 菜 单 项 用 于 浏 览 工 程 你 可以 找 到 某 个 特 定 项 目 在 哪 里 引 用 在 哪 里 定 义 由 于 这 些 项 目 依 赖 于 建 立 工 程时 创 建 的 BS C 文 件 因 此 在 使 用 这 些 项 目 前 要 确 保 最 近 有 效 地 重 建 过 工 程后 面 的 两 个 菜 单 项 In s e r t/ R e m o v e B reak p o in t 和 E n ab le B reak p o in t 用 于 调 试
应 用 程 序 最 后 你可以 打开 C lass W izard 来操作所选 对象 本书将多 次使用这种方法 或查 看文档的属性
我 最 后 要 介 绍 的 窗 口 示 例 是 你 在 编 辑 资 源 时 看 到 的 那 种 窗 口 虽 然 资 源 编辑 窗 口 比 我 们 曾 经 谈 过 的 其 它 窗 口 有 更 多 的 变 化 形 式 无 须 着 急 在 本 书 的 适当 部 分 将 介 绍 每 一 种 资 源 编 辑 窗 口 但 图 1 .2 是 个 典 型 的 这 种 窗 口
图 1 .2 资源 编辑 窗口 有许多 不同 的类 型 这个 资源编 辑窗 口显 示了一 个对 话框
在 上 图 的 情 况 下 我 们 在 查 看 对 话 框 这 个 对 话 框 中 有 四 个 控 件 其 中 两个 控 件 被 选 中 两 个 选 中 控 件 的 周 围 被 改 变 大 小 的 句 柄 所 环 绕 在 对 话 框 边沿 你 还 会 看 到 一 条 暗 淡 的 线 条 缺 省 配 置 下 线 条 的 颜 色 为 蓝 色 这 一 线 条 确
定 了 对 话 框 上 放 置 控 件 的 外 边 缘
在 图 1 .2 的 左 下 角 你 会 看 到 一 个 控 件 工 具 箱 它 包 含 了 可 以 放 置 到 对 话 框
中 的 各 种 控 件 如 果 想 在 工 具 箱 中 添 加 新 的 控 件 那 么 请 使 用 P ro je c t |
| |
A dd to |
---|---|---|
P ro je c t |C o m pon e n ts a nd C on tro ls 命 令 工 具 箱 的 右 边 是 对 话 框 工 具 条 |
它 提 供 |
|
了 简 化 对 话 框 布 局 排 列 的 有 用 工 具 |
例 如 |
M a k e Sa m e S iz e 按 钮 将 选 中 的 任 意 |
个 数 的 控 件 与 第 一 个 选 中 控 件 等 大 |
Te s t |
按 钮 让 你 在 对 话 框 完 成 之 前 就 可 以 看 |
— 看 它 的 外 观 |
现 在 让 我 们 讨 论 一 下 图 1 .2 中 显 示 的 上 下 文 菜 单 由 于 前 面 我 们 已 经 讨 论 过这 些 菜 单 项 的 主 要 用 途 因 此 这 里 只 研 究 三 个 最 重 要 的 菜 单 项 使 用 In s e rt A c - tiv e X C o n tro l 菜 单 项 可 以 把 A c tiv e X 控 件 添 加 到 当 前 对 话 框 中 而 无 须 将 它 实 际添 加 到 工 程 中 这 样 你 就 可 以 在 生 成 一 大 堆 代 码 之 前 先 看 到 该 控 件 的 工 作 效果 不 过 如 果 你 决 定 确 实 要 使 用 该 控 件 时 请 记 住 以 后 把 该 控 件 添 加 到 工 程中 C h e c k M n e m on ic s 菜 单 项 告 诉 V is u a l C + + 检 查 一 下 已 经 添 加 的 所 有 控 件
看 是 否 存 在 同 名 错 误 或 任 何 违 反 规 则 的 情 况 当 做 完 了 一 个 对 话 框 后 这 个 检查 相 当 重 要 最 后 Ev e n t 菜 单 项 显 示 一 个 对 话 框 告 诉 我 们 所 选 对 象 都 支 持 哪些 事 件 这 个 对 话 框 还 让 你 能 够 创 建 你 想 监 控 的 任 何 事 件 的 句 柄 第 2 章 中 我们 将 讲 述 使 用 这 一 特 性 的 方 法
类 视 图 ClassView
或 许 类 视 图 C la ssV ie w 将 花 去 你 大 部 分 的 时 间 该 视 图 提 供 了 工 程 中 所
有 类 的 层 次 列 表 |
通 过 扩 展 可 以 显 示 类 中 包 含 的 细 节 |
例 如 |
类 |
中 将 包 |
含 要 |
编 |
---|---|---|---|---|---|---|
辑 的 成 员 函 数 等 |
图 1 .3 显 示 了 一 个 典 型 的 类 视 图 |
图 1 .3 在 C la ssV ie w 中显 示项 目中 所有的 类
请 注 意 在 层 次 列 表 的 每 个 项 目 前 面 都 有 一 个 特 殊 的 图 标 例 如 每 个 类的 前 面 都 有 一 个 由 线 条 连 接 起 来 的 三 个 方 框 形 图 标 类 视 图 中 显 示 三 种 成 员 函数 第 一 种 是 公 共 成 员 函 数 它 的 图 标 为 一 个 紫 色 菱 形 框 第 二 种 是 私 有 成 员函 数 它 的 图 标 上 也 有 个 菱 形 框 不 过 菱 形 框 的 旁 边 还 有 一 把 钥 匙 第 三 种 是
保 护 成 员 函 数 它 的 图 标 上 有 个 菱 形 框 和 一 个 小 锁 与 此 相 似 变 量 也 有 三 种类 型 它 们 都 使 用 青 绿 色 图 标 当 看 到 一 个 绿 色 框 时 你 就 知 道 是 看 到 了 某 个CO M 对 象 的 方 法 类 视 图 中 还 使 用 了 其 它 几 种 类 型 的 图 标 但 上 面 所 述 的 六 种图 标 是 创 建 绝 大 多 数 工 程 时 都 需 要 知 道 的 图 标
技 巧 在 ClassView 窗 口 中 右 击 然 后 从 上 下 文 菜 单 中 选 择 Hide 可 以 隐藏 ClassView 窗 口 或 任 何 其 它 视 图 只 要 在 这 些 视 图 中 按 这 一 步 骤操 作 使 用 View|Works pace 命 令 可 以 重 新 显 示 ClassView 窗 口
资 源 视 图 ResourceVi ew
资 源 视 图 R e s o u rce V iew 在 层 次 列 表 中 列 出 了 工 程 中 用 到 的 所 有 资 源任 何 图 像 字 符 串 值 以 及 程 序 所 需 要 的 其 它 非 编 程 部 件 都 可 以 作 为 资 源 使 用图 1 .4 显 示 了 一 个 典 型 的 资 源 视 图 窗 口
图 1 .4 资源 视图 提供 了应用 程序 所需 资源的 完整 列表
V is u a l C + + 中 可 以 创 建 的 每 一 类 资 源 在 资 源 视 图 中 都 有 自 己 的 文 件 夹 如果 你 的 工 程 中 没 有 使 用 某 种 特 定 类 型 的 资 源 那 么 资 源 视 图 中 就 不 会 显 示 这 种资 源 的 文 件 夹 在 每 个 文 件 夹 中 包 含 了 工 程 中 所 用 的 该 类 资 源 例 如 对 话 框 D ia lo g 文 件 夹 中 包 含 了 工 程 中 所 有 的 对 话 框 包 括 A bout 对 话 框 每 类 资
源 也 都 使 用 自 己 的 图 标
技 巧 右 击 资 源 视 图 最 顶 端 的 文 件 夹 系 统 显 示 一 个 可 以 访 问 两 类 特 殊 对话 框 资 源 的 菜 单 Resource I ncludes 和 Resource S ymbols 右 击 特定 资 源 的 文 件 夹 系 统 会 显 示 添 加 该 类 新 资 源 的 上 下 文 菜 单
文 件 视 图 FileView
文 件 视 图 F ile V ie w 提 供 了 工 程 中 所 有 文 件 的 完 整 列 表 无 论 这 些 文件 是 否 包 含 代 码 图 1 .5 显 示 了 文 件 视 图 窗 口 的 一 个 典 型 示 例 请 注 意 列 表中 包 含 了 从 R ead M e .tx t 到 V is u a l C ++ 自 动 生 成 的 各 种 文 件
图 1 .5 文件 视图 包含 了工程 中所 有文 件的完 整列 表即使 这些 文件 中不包 含任 何代 码或资 源
每 个 文 件 类 型 都 有 自 己 的 文 件 夹 例 如 所 有 的 源 代 码 文 件 都 显 示 在 S ourc e
F ile s 源 文 件 文 件 夹 中 我 们 不 仅 可 以 把 文 件 从 一 个 文 件 夹 移 动 到 另 一 个 文件 夹 中 也 可 以 创 建 保 存 特 定 类 型 文 件 根 据 其 扩 展 名 的 新 文 件 夹 我 通 常要 创 建 一 个 T e x t F ile 文 本 文 件 文 件 夹 来 保 存 所 有 扩 展 名 为 TX T 的 文 件 创建 新 文 件 夹 的 方 法 是 右 击 要 添 加 新 文 件 夹 的 文 件 夹 或 工 程 项 目 然 后 从 上 下文 菜 单 中 选 择 N e w F o ld e r 菜 单 项 此 后 系 统 将 显 示 如 下 图 所 示 的 N e w F o ld e r 对话 框 键 入 文 件 夹 的 名 称 以 及 相 应 的 文 件 扩 展 名 然 后 单 击 OK 按 钮 完 成 创 建过 程
工 具 条
工 具 条 T oo lb a r 是 我 们 讨 论 D e ve lope r S tud io 界 面 的 最 后 一 个 话 题 应 该说 明 的 是 V is u a l C + + 拥 有 比 你 启 动 V is u a l C + + 后 看 到 的 工 具 条 多 得 多 的 工 具条 在 工 具 条 上 的 任 何 位 置 右 击 你 都 会 看 到 如 下 图 所 示 的 上 下 文 菜 单
该 菜 单 中 列 出 了 V is u a l C ++ 提 供 的 所 有 标 准 工 具 条 带 选 中 符 号 的 菜 单 项对 应 的 工 具 条 当 前 显 示 在 工 具 条 区 域 中 如 果 想 把 某 个 菜 单 项 对 应 的 工 具 条 添加 到 工 具 条 区 域 只 需 要 单 击 该 菜 单 项 即 可 反 过 来 如 果 想 在 工 具 条 区 域 中去 掉 某 个 工 具 条 也 只 需 要 通 过 在 上 下 文 菜 单 中 单 击 对 应 的 菜 单 项 去 掉 其 选中 符 号 即 可
上 下 文 菜 单 中 还 有 一 个 Cu s to m iz e 菜 单 项 值 得 注 意 选 择 该 菜 单 项 后 你 会 看到 如 下 图 所 示 的 对 话 框
Cu s to m iz e 对 话 框 包 含 了 几 个 让 你 重 新 配 置 D e ve lope r S tud io 界 面 上 绝 大 多数 部 件 的 选 项 卡 然 而 这 里 我 们 最 感 兴 趣 的 是 C o m m a nds 选 项 卡 对 每 个 菜单 和 工 具 条 它 都 包 含 了 一 系 列 的 图 标 代 表 对 应 的 命 令 或 文 本 命 令 如 果 想给 现 存 工 具 条 上 增 加 一 个 命 令 只 需 要 抓 住 其 图 标 或 文 本 命 令 并 把 它 拖 曳到 工 具 条 上 这 样 所 选 命 令 就 显 示 在 工 具 条 上 你 可 以 更 快 速 地 访 问 它 们 了如 果 选 择 了 某 个 现 在 还 没 有 相 应 图 标 的 命 令 那 么 系 统 会 显 示 B u tto n A ppe a ra n c e 对 话 框 在 这 个 对 话 框 中 可 以 为 命 令 选 择 一 个 图 标
同 样 的 功 能 对 菜 单 项 也 一 样 起 作 用 你 需 要 做 的 工 作 就 是 打 开 要 修 改 的 下拉 菜 单 在 C o m m a nds 选 项 卡 中 抓 住 要 添 加 到 菜 单 中 的 命 令 然 后 将 其 拖 曳 到菜 单 项 中 希 望 的 位 置 在 这 种 情 况 下 你 看 到 的 总 是 命 令 的 文 本 版 本 而 不 是 图标
从 工 具 条 或 菜 单 中 删 除 不 需 要 命 令 的 方 法 也 很 简 单 简 单 地 抓 住 不 需 要 的命 令 并 把 它 拖 曳 到 Cu s to m iz e 对 话 框 中 该 命 令 将 在 菜 单 或 工 具 条 中 消 失当 然 你 随 时 都 可 以 重 新 把 它 添 加 到 菜 单 或 工 具 条 中
你 也 可 以 根 据 需 要 移 动 工 具 条 的 位 置 单 击 工 具 条 左 边 缘 的 双 线 竖 杠 然后 把 工 具 条 拖 曳 到 所 需 位 置 与 此 相 似 如 果 你 不 喜 欢 某 个 菜 单 的 当 前 位 置 那 么 抓 住 它 在 Cu s to m iz e 对 话 框 打 开 的 情 况 下 并 把 它 移 动 到 所 需 位 置