计算机世界日报
返回首页 产品报价 实用技巧 国产软件 技术天地 站点精选

计算机世界展览会日报

  综合要闻
  企业&人.com
  产品与技术
  网络与通信
  市场与渠道
  99全文检索

CCW网站

  网络世界
  微电脑世界
  IT经理世界
  CCW展览
  信息服务中心   家用电脑世界

兄弟刊物

  电子与信息化
  今日电子
  中国新闻科技
  电子知识产权
  电子产品世界

网上专递

  Linux园地
  友情链接
  冬涛谈法
Dongtao on Law

98内容总汇



实用技巧

用VC5 开 发 监 控 界 面 的 方 法

南 京 师 范 大 学 物 理 系
伶 俐----黄 斌----顾 敏 芬

---- [ 本 文 为 摘 要, 全 文 可 下 载,Zip 6KB]

---- VC5 开 发 工 具 提 供 了 现 成 的 窗 口、 控 制 与 工 具 条 的 制 作 手 段, 大 大 简 化 了 界 面 的 开 发 过 程, 并 且 使 得 开 发 出 的 界 面 具 有 组 态 软 件 风 格, 使 用 起 来 方 便、 灵 活、 简 单 易 学。

---- 本 文 以 一 实 例 介 绍 如 何 实 现 三 个 独 立 的 分 离 窗 口: 监 视 窗 口, 控 制 窗 口 和 动 画 窗 口, 并 以 图1 中 的 进 水 和 温 度 值 传 递 为 例, 介 绍 如 何 实 现 控 制 功 能 和 不 同 窗 口 间 的 数 据 共 享, 并 介 绍 实 现 无 闪 烁 动 画 的 方 法。

---- 如 图1, 将 工 作 台 分 离 成 为 三 个 窗 口, 动 画 窗 口 用 于 模 拟 锅 炉 的 进、 出 水、 升 温 的 画 面 显 示, 其 中 的 画 面 与 系 统 采 集 的 数 据 相 对 应。 控 制 窗 口 用 于 实 现 预 设 温 度 值, 调 节 水 位、 控 制 加 热、 暂 停 等 功 能。 监 视 窗 口 用 来 实 时 跟 踪 采 样 的 温 度 值, 作 出 温 度-- 时 间 曲 线。

一、 创 立 分 离 窗 口

---- 要 实 现 多 窗 口 显 示, 必 须 使 用CSplitterWnd 类, 将 窗 口 分 成 三 个 子 窗 口, 然 后 将 各 个 功 能 类 与 窗 口 联 系 起 来。 在 创 建 应 用 程 序 时, 在 第 一 步 中 选 择Single Document Interface, 并 选 用 中 文 字 库, 在 第4 步 中 按 下Advanced, 选 择Use Split Window 选 项。 设 定 应 用 程 序 名 为Animation。 目 前 我 们 只 有 一 个 视 类CAnimationView, 它 将 与 动 画 窗 口 对 应, 此 外 我 们 还 要 生 成 具 有 对 话 功 能 的 监 视 窗 口( 对 应CShowView 类) 和 控 制 窗 口( 对 应 CControlView 类)。 在Resource View 中 调 出 上 下 文 菜 单 并 选 择Insert, 选 择 属 性 为IDD_FORMVIEW, 创 建 监 视 对 话 框IDD_SHOWVIEW 和 控 制 对 话 框IDD_CONTROLVIEW, 并 单 击 鼠 标 右 键 在 Properties 选 择 项 中 选 择 中 文 字 库。 然 后 编 辑IDD_CONTROLVIEW: 利 用VC5 提 供 的 控 件 生 成 器 生 成ID 名 为IDC_SETTEMPERATURE 的 文 字 编 辑 域, 并 生 成Caption 为“ 设 置 温 度 初 始 值”。 再 利 用button 生 成 器, 生 成 控 件IDC_WATERIN,IDC_CONFIRM,Caption 分 别 为“ 进 水” 和“ 确 认”。 再 利 用ClassWizard, 创 建 基 于CFormView 类 的 新 类, 分 别 为 CShowView 和CControlView 类, 并 将 它 们 与 刚 创 建 的 两 个 对 话 框 联 系。
	.
	.
	.

---- 再 转 入Animation.cpp 中, 修 改InitInstance() 函 数, 将 其 中 的m_pMainWnd- >ShowWindow (SW_SHOW), 改 为m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED); 至 此, 我 们 可 以 生 成 图1 的 界 面 框 架。

二、 动 画 显 示 窗 口 的 实 现

---- 动 画 是 通 过 调 用 一 幅 幅 的 图 片 来 实 现 的, 因 此 先 将 所 需 的 画 面 载 入 资 源BITMAP 中, 并 按 顺 序 编 辑 它 们 的ID 号, 然 后 在 定 时 器 中, 每 隔 一 定 的 时 间 调 用 一 次 动 画 函 数。 第 一 步 先 生 成 定 时 器, 用ClassWizard 给CAnimationView 添 加 消 息 处 理 程 序:OnCreate() 函 数 对 应 于 消 息WM_CREATE,OnTimer() 函 数 对 应 于 消 息WM_TIMER。 编 辑 函 数OnCreate(), 生 成 每 隔0.1 秒 的 时 钟。
	.
	.
	.

三、 控 制 窗 口 功 能 的 实 现

---- 利 用ClassWizard 中 的Member Variables 标 签 为CControlView 增 加 成 员 变 量。
		控件
		控件ID
		类型
		成员
		预设温度值
		IDC_SETTEMPERATURE
		int
		m_nSetTemperature
	在CControlView中增加消息处理函数:
		对象
		对象ID
		函数
		消息
	进水按键
		IDC_WATERIN
		OnWaterIn()
		BN_CLICKED
	确认按键
		IDC_CONFIRM
		OnComfirm()
		BN_CLICKED

---- 下 面 以 输 入 预 设 温 度 值 和 进 水 响 应 为 例, 来 讲 述 如 何 实 现 控 制 功 能。 当 控 制 视 窗 (CControlView 类) 中 预 置 温 度 设 定 之 后, 按 下 确 认 键 即 响 应 消 息OnConfirm(), 在 监 视 视 窗 (CShowView 类) 中 的 状 态 监 测 图 中 画 一 条 预 设 温 度 的 横 线。 当 控 制 视 窗(CControlView 类) 中 按 下 进 水 键, 便 在 动 画 视 图(CAnimationView 类) 有 进 水 动 画 产 生。

---- 这 时 控 制 视 图 要 向 监 视 视 图、 动 画 视 图 传 送 数 据, 但 它 们 之 间 无 法 直 接 实 现 数 据 共 享。 MFC 类 库 中CDocument 类 及 其 派 生 类 用 来 管 理 工 作 数 据, 它 能 够 读 写 和 存 储 视 图 所 要 观 察 和 处 理 的 数 据, 并 可 以 同 时 拥 有 多 个 视 图。 所 以, 此 处 用CDocument 的 派 生 类 CAnimationDoc 作 为 数 据 传 输 的 中 介, 来 实 现 不 同 视 窗 之 间 的 数 据 传 递。

---- 预 置 温 度( 变 量 名 为m_nSetTemperature) 的 数 据 传 送 示 意 图 如 图2 所 示。

---- m_nSetTemperature m_nSetTemperatureDoc

	.
	.
	.
---- 最 后 在ControlView.cpp 的 开 头 包 含“AnimationDoc.h"。 然 后 转 入CShowView 中, 为 了 要 能 达 到 实 时 监 测 的 目 的, 数 据 的 接 收 要 做 在 定 时 器 中, 这 样 才 可 以 不 断 地 检 测 是 否 有 新 的 数 据 输 入。 检 测 到 温 度 设 置 标 志 后, 画 一 条 横 线。
	.
	.
	.
	
---- 同 样, 在CAnimationView 中, 编 辑OnTimer() 函 数 调 用 的 过 程ServicedAnimation(), 检 测 到 进 水 键 响 应 成 功 后, 调 用 进 水 动 画 例 程DrawAnimationWaterIn()。

四、 监 视 窗 口 功 能 的 实 现

---- 温 度、 水 位 跟 踪 实 现 的 原 理 类 似 于 控 制 功 能, 它 实 现 的 是CAnimatinDoc 与CShowView 类 之 间 的 数 据 传 递, 当 系 统 采 样 的 温 度 与 水 位 变 化 时,CShowView 中 的m_nTemperature( 温 度 变 量) 即 随 之 变 化, 在 利 用MoveTo() 与LineTo() 函 数, 便 可 将 其 画 在 图 上。 再 把 这 些 做 在 定 时 器 当 中, 就 可 以 实 时 监 测。

参 考 文 献:

---- 1、《Visual C++5 开 发 人 员 指 南》David Bennett 机 械 工 业 出 版 社

---- 2、《Visual C++4 开 发 人 员 指 南》Scott Stanfield 机 械 工 业 出 版 社

---- 3、《MFC 开 发 人 员 参 考 手 册》 Robert D. Thompson 机 械 工 业 出 版 社

 
免 费 订 阅

实用技巧分类

Office应用
CAD
C、C++
数据库应用
Delphi
Internet应用
Java
Notes应用
操作系统应用
PowerBuilder
VB
Visual Foxpro
其他类
上周 排行榜
如 何 投 稿 ?

编者的话

在日常的工作生活中, 我们对计算机软硬件技术的应用开发肯定有许多的心得体会, 拿来和众人分享:让别人得到他们想要的,使自己找到苦苦寻觅的; 小的点点滴滴,大的工程系统,这里都需要。投稿 的关键在“技巧”二 字,知他人所不知,这样的稿件本栏最最欢迎! 大家公认的 好文章自然会有好的奖励。希望每个人 在这里都有所收获...

r2.gif (980 bytes)
  中国惠普
  3Com中国
  Motorola中国
  CA中国
  Cabletron
  Sony在中国
  西门子WinCC
  爱普生中国
  中国建设银行
  德州仪器(TI)
  问博医药


中国计算机世界出版服务公司版权所有