赞
踩
还遗憾!我装的VisualStudio2008中并未找到这个Splash screen组件。
但是也不必遗憾,软件的一大特点就是可移植,软件攻城狮的特点就是站在巨人的肩膀上---其实就是一个字“抄”。
本文是完全参考孙鑫MFC编程第9课的VC6.0代码完成!如果有MFC编程经验和C++软件编程经验的同志,请直接跳到本文“2.参考代码”看代码即可,因为不难,就是拷贝代码而已!本文是对0基础讲解!
1.移植过程↓
首先在找一副图片,图片格式是*.bmp的。如果你没有bmp格式的,就用画图工具转换一下。
这里我就用仙女座启动界面。把图片放到你工程文件.../res/ 目录下,这个目录保存了很多工程资源。
接下来就是导入位图,在 资源视图 中任意文件处 右键->填添加资源 ,然后找到并选择刚才的bmp图片。
这个时候一个位图资源就添加了,
刚创建的位图资源ID默认应该都是IDB_BITMAP1,我这里讲位图的ID改为IDB_SPLASH.改的方法是右键点击IDB_BITMAP1->属性,找到ID栏,就可以修改。
接下来就是把“2.参考代码”中的Splash.cpp和Splash.h放到工程目录下,然后在“解决方案资源管理器”分别通过右键 添加->现有项 加入到“头文件”和“源文件”中。这个时候可以编译了,编译后会在类视图中显示CSplashWnd类,如不会显示,则重启下VS2008;(以上是直接使用参考代码,当然你也可以直接在类视图添加CSplashWnd类,父类选择CWnd,然后根据参考代码一步步完成类成员,这种比较麻烦点。)
再在CMainFrain::OnCreate中增加Splash的显示函数,即在框架构建显示前调用CSplashWnd中的ShowSplashScreen函数来显示启动位图。
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
//...省略系统代码
CSplashWnd::ShowSplashScreen(this);
return 0;
}
当然这个时候启动位图还是不能显示的,因为ShowSplashScreen函数中有个判断
if (!c_bShowSplashWnd || c_pSplashWnd != NULL){....}
其中c_bShowSplashWnd 是静态BOOL类型变量,通过略读ShowSplashScreen函数体,可以知道只有c_bShowSplashWnd 为真才能继续执行,我们只要让它为TRUE就可以咯,甚至可以把它删除不做判断也行,因为是静态的成员所以无法在构造函数中初始化咯。
我们通过查找可以发现c_bShowSplashWnd 是在void CSplashWnd::EnableSplashScreen(BOOL bEnable /*= TRUE*/)中被执行赋值的,而这个EnableSplashScreen函数的形参有个默认的参数为TRUE,所以我们只要在代码运行时,在合适的地方调用EnableSplashScreen函数即可,那么放在那里好呢,这里推荐放到App类的InitInstance()中,当然要记得把Splash.h头文件放到App类中。注意代码放置的位置。
BOO
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。