分享
 
 
 

用VC5 制 作 应 用 程 序 启 动 封 面

王朝vc·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

用VC5 制 作 应 用 程 序 启 动 封 面

用VC5 制 作 应 用 程 序 启 动 封 面

很 多 大 型 应 用 程 序 都 有 启 动 封 面, 如Word 等 办 公 系 列 软件 和VC + + 等编 程 软 件。 通 过 启 动 封 面, 除 了 显 示 应 用程 序 名 称 和 版 权 等 提 示 画 面,还 可 避 免 由 于 应 用 程 序启 动 前 进 行 大 量 数 据 初 始 化 时, 用 户 较 长 时 间 的等待, 给 应 用 程 序 增 添 了 许 多 动 态 特 性 和 专 业 规 范。 鉴于VC + + 开 发 工 具 应 用 较 广, 这 里 以VC5 为 例 阐 述 启 动封 面 的 一 般 实 现 步 骤。

---- 1. 制 作 封 面 位 图

---- 制 作 应 用 程 序 启 动 封 面 真 彩 位 图, 记 录 位 图 的 高度 和 宽 度, 建 立 所 需要 的 其 他 声 音 等 文 件。

---- 2. 建 立 应 用 程 序

---- 利 用FILE >NEW 菜 单 建 立 名 为START 的 多 文 档 应 用 程 序框 架, 并 利 用 类 向导AppWizard 增 加 基 类 为generic CWnd 的 新 类CSplashWnd,将 新 类 的 文 件 改 名 为splash.h 和splash.cpp, 并 增 加WM -CREATB 和WM -PAINT 的 消 息 映 射 函 数。

---- 3. 定 义 变 量 和 函 数

---- 在splash.h 中 定 义 如 下 成 员 变 量 和 函 数:

public:

BOOL Create(CWnd * pParentWnd=NULL);

HANDLE hBitsSrc;

LPSTR pBitsSrc;

UINT iW,iH;

---- 4. 建 立 启 动 封 面 窗 口

---- 在splash.cpp 中 增 加Create 函 数, 建 立 显 示 位 图 的 弹 出 窗口:

#include “windowsx.h” / / 增 加 扩 展 窗 口 建 立

… …

struct{ / / 位 图 文 件 头 结 构

BITMAPINFOHEADER Header;

}Info;

BOOL CSplashWnd::Create(CWnd * pParentWnd)

{ / / 建 立 显 示 位 图 的 弹 出 窗 口

return CreateEx(0,AfxRegisterWndClass(0,AfxGetApp() -〉LoadStandardCursor

(IDC_ARROW)),

NULL,WS_POPUP|WS_VISIBLE,0,0,672,480,

pParentWnd -〉GetSafeHwnd(),NULL);

}

int CsplashWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)

{ … …

/ / TODO:Add your specialized creation code here

CenterWindow(); / / 使 弹 出 窗 口 居 中

return 0;

}

---- 5. 完 善 析 构 函 数

---- 在splash.cpp 中 完 善 析 构 函 数, 为 显 示 位 图 作 准 备:

CSplashWnd::CSplashWnd() / / 完 善 析 构 函 数

{iW=672;iH=480; / / 位 图 的 宽 度 和 高 度

Info.Header.biSize=sizeof(BITMAPINFOHEADER);

Info.header.biWidth=iW;

Info.Header.biHeight=iH;

Info.Header.biPlanes=1L;

Info.Header.biBitCount=24L;

hBitsSrc=::GlobalAlloc(GHND,(long)(iW *iH *3)); / / 分 配 内 存

pBitsSrc=(LPSTR)::GlobalLock(hBitsSrc); / / 加 锁 内 存

}

CSplashWnd::CSplashWnd()

{::GlobalUnlock(hBitsSrc); / / 解 锁 内 存

::GlobalFree(hBitsSrc); / / 释 放 内 存

}

---- 6. 显 示 真 彩 位 图

---- 在splash.cpp 中 完 善Onpaint 函 数, 实 现 真 彩 位 图 的 显 示:

void CSplashWnd::OnPaint()

{ … … / /TODO:Add your message handler code here

CFile fbmp;

fbmp.Open(“c:\\windows\\EMC1.BMP”,CFile::modeRead|

CFile::typeBinary|CFile::shareExclusive); / / 打 开 文 件

fbmp.Seek(54,CFile::begin); / / 位 图 文 件 头 为54 字 节

fbmp.ReadHuge(pBitsSrc,(long)(iW *iH *3)): / / 读 文 件

fbmp.Close(); / / 关 闭 文 件

HBITMAP hBitmap=::CreateDIBitmap(dc.m_hDC,

(BITMAPINFOHEADER FAR *) &(Info.Header),CBM_INIT,

pBitsSrc,(LPBITMAPINFO) &Info,DIB_RGB_COLORS); / / 建 立 位 图

HDC hMemDC=::CreateCompatibleDC(dc.m_hDC); / / 建 立 内 存

HBITMAP hBitmapOld=SelectBitmap(hMemDC,hBitmap); / / 选 择 对 象

::StretchBlt(dc.m_hDC,0,0,iW,iH,hMemDC,0,0,iW,iH,SRCCOPY);

/ / 显 示 真 彩 位 图

::DeleteObject(SelectObject(hMemDC,hBitmapOld)); / / 删 除 位 图

}

---- 7. 弹 出 窗 口 类 声 明

---- 在Mainfrm.h 中 增 加 代 码, 为 显 示 和 撤 销 弹 出 窗 口 作 准备:

class CsplashWnd: / / 闪 烁 窗 口 类

… …

class CMainFrame: public CMDIFrameWnd

{ … …

pubIic:

CSplashWnd SplashWnd; / / 声 明 类

}

---- 8. 真 彩 封 面 的 实 现

---- 在Mainfrm.cpp 中 增 加 显 示 弹 出 窗 口、 播 放 音 乐、 延 时 功能 和 撤 销 弹 出 窗 口 的 代 码, 以 实 现 真 彩 封 面 的 整 个 处理 过 程:

#include “splash.h” / / 新 类 支 持

#include “mmsystem.h” / / 多 媒 体 支 持

#pragma comment(lib,“WINMM.LIB”) / / 多 媒 体 支 持

… …

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

SplashWnd.Create(this); / / 创 建 弹 出 窗 口

SplashWnd.ShowWindow(SW_SHOW); / / 显 示 弹 出 窗 口

SplashWnd.UpdateWindow(); / / 更 新 弹 出 窗 口

int dd=sndPlaySound(“c:\\windows\\reminder.wav”,SND_ASYNC|SND_LOOP);

/ / 异 步 播 放WAV 文 件

if (dd==FALSE){ / / 参 数SND_ASYNC|SND_LOOP 可 循 环 播 放

AfxMessageBox(“ 播 放WAV 文 件 错 误”);

}

::Sleep(2000); / / 进 程 休 眠2 秒

… … / / 应 用 程 序 初 始 化 工 作

dd=sndPlaySound(“”,SND_ASYNC); / / 终 止 播 放.WAV 文 件

SplashWnd.DestroyWindow(); / / 撤 消 弹 出 窗 口

return 0;

}

---- 至 此 整 个 真 彩 启 动 封 面 制 作 完 毕, 如 果 需 要 还 可以 增 加 动 画 和 移 动

字 幕 等 其 他 多 媒 体 功 能。

--------------------------------------------------------------------------------

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有