---- 读 了 贵 报9 月7 日《 学 习 与 编 程》 版 刊 登 的 宋 立 波 先 生 的 文 章, 本 文 介 绍 另 一 种 方 法 来 制 作 封 面, 此 方 法 对 于 单 文 档、 多 文 档 及 对 话 框 窗 体 均 适 用, 且 弥 补 了 宋 立 波 先 生 文 章 中 所 述 封 面 关 闭 后 应 用 程 序 窗 体 才 能 显 示 的 不 足 之 处。 方 法 如 下:
---- 1. 用App Wizard 生 成 一 工 程, 然 后 打 开 资 源 编 辑 器,Import 一 个BMP 图 形 文 件( 注: 由 于VC 的Bitmap 资 源 只 能 使 用256 色 图 形, 所 以 需 用 画 板 或 其 他 图 形 工 具 转 换 成256 色 图 形), 打 开 属 性 对 话 框, 将ID 号 改 为IDB_BITMAP -SPLASH。
---- 2. 新 建 一 个 对 话 框 资 源, 打 开 属 性 对 话 框, 选 择General; 将 新 对 话 框 资 源 的ID 号 改 为IDD_DIALOG_SPLASH, 选 择Styles, 将Title bar 选 择 框 置 空, 改 变Border 属 性; 选 择None, 则 封 面 为 平 面 图 形; 选 择Dialog Frame, 则 封 面 为 立 体 三 维 图 形。 在 对 话 框 资 源 上 添 加Picture 控 件, 打 开 属 性 对 话 框 选 择General, 将Picture 控 件 的Type 改 为Bitmap、 Image 改 为IDB -BITMAP -SPLASH; 将 对 话 框 资 源 的 大 小 改 为 与Picture 控 件 大 小 相 同。
---- 3. 选 对 话 框 资 源IDD_DIALOG_SPLASH, 打 开Class Wizard 添 加 一 个 新 类, 类 名 定 义 为CSplash。
---- 4. 在MainFrame.h 的 类 定 义 中 添 加 一 指 针 成 员 变 量 *sphash, 类 型 为CSplash; 在MainFrame.cpp 文 件 中 添 加 头 文 件, 引 用 #include“splash.h”。 打 开Class Wizard, 选 择Message Maps, 在Class name 中 选 择CMainFrame, 在Messages 中 选 择WM_TIMER 添 加OnTimer 函 数。
---- 5. 在CMainFrame 类 的OnCreate 函 数 中 添 加SetTimer 函 数, 并 添 加 显 示splash 对 话 框 的 程 序 段:
int CMainFrame::OnCreate (LPCREATESTRUCT 1pCreateStruct) { SetTime(1,50,NULL);---- ∥ 添 加ID 号 为1 的WM_TIMER 事 件, 响 应 频 率 由 用 户 自 定 义, 但 不 宜 过 大
splash=new CSplash(); ∥ 添 加 播 放WAV 声 音 的 程 序 段 ∥ 例 如:sndPlaySound(“sound.way,”SND_ASYNC); splash ->Create(IDD_DIALOG1); splash ->ShowWindo(SW_SHOW); splash ->UpdateWindow(); … … ∥ 此 处 是OnCreate 函 数 中 原 有 的 程 序 段 CenterWindow(); ∥ 应 用 程 序 窗 体 居 中 显 示 return 0; }---- 6. 在CMainFrame 类 的OnTimer 函 数 中 添 加 响 应WM_TIMER 事 件 的 程 序 段: Void CMainFrame::OnTimer(UINT nIDEvent)
{ ∥TODO:Add your message handler code here and/or call default if (nIDEvent==1) { if(splash ->Is WindowVisibl()) { splash ->SetActiveWindow(); ∥ 封 面 置 为 当 前 活 动 窗 体 splash ->UpdateWindow(); Sleep(2000); ∥ 封 面 显 示 停 留 时 间 由 用 户 自 己 改 变 splash ->SendMessa(WM_CLOSE); } else { SetActiveWindow(); ∥ 应 用 程 序 窗 体 置 为 当 前 活 动 窗 体 KillTimer(1); ∥ 清 除WM_TIMER 事 件 } } }---- 到 此, 封 面 制 作 成 功, 如 果 要 添 加 声 音, 只 需 按 宋 立 波 先 生 文 章 中 所 述 方 法, 添 加 在CMainFrame 类 的OnCreate 函 数 中 注 释 段 内 即 可。 此 法 制 作 简 单, 容 易 实 现, 唯 一 的 缺 点 是 此 封 面 显 示 的 图 形 色 彩 不 够 丰 富。( 贾 暾)