网站大量收购独家精品文档,联系QQ:2885784924

使用扩充内存实现DOS环境下的弹出式图形窗口.docxVIP

使用扩充内存实现DOS环境下的弹出式图形窗口.docx

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
使用扩充内存实现DOS环境下的弹出式图形窗口

使用扩充内存实现 DOS环境下的弹出式图形窗口 一、 问 题 的 提 出 在DOS 环 境 下, 弹 出 式 图 形 窗 口 的 实 现 方 法 是: 在 窗 口 打 开 时, 存 储 窗 口 将 覆 盖 一 部 分 区 域 的 图 像, 然 后 在 该 区 域 创 建 窗 口 的 内 容; 在 窗 口 关 闭 时, 将 已 存 储 的 图 像 填 回 原 区 域。 一 般 地, 可 将 图 像 存 储 在 常 规 内 存 中。 但 当 打 开 多 个 窗 口 时, 这 样 做 将 占 用 大 量 的 常 规 内 存, 影 响 用 户 程 序 的 执 行。 另 一 种 方 法 是 将 图 像 存 储 在 硬 盘 上, 但 由 于 硬 盘 的 操 作 速 度 太 慢, 在 打 开 或 关 闭 窗 口 时 会 出 现 停 顿 现 象。 如 果 将 图 像 存 入 扩 充 内 存, 就 可 节 省 宝 贵 的 常 规 内 存, 同 时, 扩 充 内 存 的 操 作 速 度 也 很 快, 窗 口 的 打 开 和 关 闭 瞬 间 即 可 完 成。 但 在DOS 环 境 下, 不 能 直 接 存 取 扩 充 内 存, 必 须 通 过 扩 充 内 存 的 驱 动 程 序 来 操 作。 二、 解 决 的 办 法 为 了 解 决 上 述 两 个 问 题, 必 须 先 实 现 对 扩 充 内 存 的 存 取, 然 后 实 现 窗 口 的 打 开 和 关 闭。 笔 者 参 考 有 关 资 料, 编 制 了 有 关 程 序。 为 了 安 全 与 方 便, 已 封 装 成 两 个 类:XMS 及XMSWIN。 类XMS 提 供 了 对 扩 充 内 存 的 检 测 和 存 取 功 能。 读 者 在 程 序 中 用XMS 定 义 一 个 目 标, 就 可 安 全 地 使 用 扩 充 内 存。 类XMSWIN 继 承 了 类XMS 的 特 征 和 功 能, 提 供 了 窗 口 的 快 速 打 开 和 快 速 关 闭 功 能。 下 边 先 说 明 使 用 扩 充 内 存 的 方 法。 使 用 扩 充 内 存 之 前, 必 须 确 认 用 户 的 计 算 机 系 统 中 有 一 定 容 量 的 扩 展 内 存, 并 在CONFIG.SYS 文 件 中 设 置DEVICE=C:\DOS\HIMEM.SYS。 这 样 扩 展 内 存 就 置 于 扩 充 内 存 驱 动 程 序 的 管 理 之 下。 用 户 通 过 类XMS 使 用 扩 充 内 存 的 具 体 步 骤 如 下:  1. 确 认 扩 充 内 存 驱 动 程 序 已 加 载 在 内 存 中, 并 获 取 驱 动 程 序 的 入 口 地 址。 这 一 步 工 作 由 类XMS 中 的 构 造 函 数 自 动 完 成, 用 户 程 序 无 需 作 任 何 工 作;  2. 在 扩 充 内 存 中 申 请 一 块 相 应 大 小 的 内 存 块。 这 一 步 由 用 户 程 序 调 用XMS 类 的 成 员 函 数halloc 实 现, 如 成 功 则 返 回 这 块 扩 充 内 存 的 句 柄, 否 则 返 回 0。 调 用 该 函 数 时 的 参 数 为 以KB 为 单 位 的 需 申 请 的 块 的 长 度;  3. 用 户 在 常 规 内 存 中 申 请 一 块 内 存;  4. 将 需 存 入 扩 充 内 存 的 数 据 存 入 常 规 内 存;  5. 将 常 规 内 存 中 的 数 据 移 入 扩 充 内 存。 这 一 步 由 用 户 程 序 调 用 类XMS 的 成 员 函 数base_to_XMS 实 现, 调 用 该 函 数 的 参 数 如 下;  base: 常 规 内 存 的 地 址, 无 类 型 远 程 指 针;  handle: 扩 充 内 存 的 句 柄, 无 符 号 整 数;  length: 移 入 数 据 的 长 度, 长 整 型 数, 单 位 为Byte;  destoffsets: 数 据 在 扩 充 内 存 中 相 对 块 起 点 的 偏 移 量, 长 整 型 数, 单 位 为Byte;  6. 如 有 多 块 数 据 或 大 量 数 据 需 移 入 扩 充 内 存, 可 在 第2 步 中 一 次 申 请 足 够 大 的 扩 充 内 存, 重 复 步 骤3、4、5。 特 别 说 明 一 点, 在 执 行 第 五 步 时, 必 须 改 变 参 数destoffsets 的 值。 这 样, 多 块 数 据 存 入 同 一 块 扩 展 内 存 而 不 会 相 互 覆 盖, 这 块 扩 充 内 存 由 其 句 柄 唯 一 地 标 识。 当 然, 也 可 以

文档评论(0)

knb7332j + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档