手机站
网通分站
电信主站
密 码:
用户名:
热门关键字:  域名  虚拟主机  cn域名  域名注册  asd
当前位置 : 主页>程序设计>C/C++>列表

利用VisualC 制作应用程序启动画面

来源:互联网 作者:西部数码 时间:2008-04-09 点击:
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
  摘要:本文提供了四种启动画面制作方法。

  使用启动画面一是可以减少等待程序加载过程中的枯燥感(尤其是一些大型程序);二是可以用来显示软件名称和版权等提示信息。怎样使用VC 制作应用程序的启动画面呢?本文提供四种方法,前三种适用于基于文档的应用程序,第四种适用于基于对话框的应用程序。

  1.利用组件库中的Splash Screen组件实现

  (1)用Photoshop等制作启动画面图像,保存为bmp格式。

  (2)用Appwizard建一个基于单文档的工程Splash。

  (3)在资源中插入位图资源

  打开VC 的资源编辑器,用鼠标右键单击Resources文件夹,选择Import命令,插入所制作的位图。如果位图超过256色,VC会弹出一个对话框,提示位图已经插入但不能在位图编辑器中显示,确定即可。将位图ID改为IDB_SPLASH。

  (4)添加Splash Screen控件

  ①选择菜单“project”/“Add To Project”/“Conponents and Controls”打开对话框,在列表框中双击“Visual C Conponents”选项,选择“Splash Screen”控件,然后单击“Insert”。

  ②确认或修改类名和位图资源ID,单击OK确认。

  ③编译、连接,漂亮的启动画面就显示出来了。

  (5)如果需要改变启动画面的停留时间,就修改SetTimer()函数的第二个参数,默认是750 毫秒。该函数所在位置:

int CSplashWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
 ...
 // Set a timer to destroy the splash screen.
 SetTimer(1, 750, NULL); //修改第二个参数以调整画面停留时间
 return 0;
}
  2.利用无模式对话框显示启动画面

  (1)用Appwizard建一个基于单文档的工程Splash。

  (2)导入用作启动画面的图片,更改ID为IDB_SPLASH。

  (3)新建一个对话框,在其中添加启动画面。

  在资源中新建一个对话框,创建对话框类CSplashDlg。在对话框中添加一个Picture控件,打开其“Properties”对话框,选General,在Type下拉列表中选择Bitmap,在Image下拉列表中选前面导入的位图资源ID值:IDB_SPLASH。

  (4)修改对话框的显示效果

  ①调整对话框大小,去掉两个自动生成的按钮,并在“Properties”的“Styles”页中去掉对Title bar的选取;

  ②选中图像,调整大小使之适应对话框的可编辑区,修改其“Properties”的“Styles”使之居中。

  (5)在CMainFrame类的OnCreate()函数中添加创建、显示并销毁无模式对话框的代码。

#include “SplashDlg.h” //加到MainFrm.cpp文件的头文件调用部位
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
 CSplashDlg *dlg = new CSplashDlg(this);
 dlg->Create(CSplashDlg::IDD,this); //创建对话框
 dlg->ShowWindow(SW_SHOW); //显示对话框
 dlg->UpdateWindow();
 Sleep(2000); //画面显示停留时间,单位为毫秒
 …
 dlg->DestroyWindow(); //销毁对话框
 return 0;
}
  3.通过发送消息显示和销毁启动画面

  ①重复方法二的步骤1至步骤4。

  ②使用Class Wizard为CMainFrame类添加消息响应函数WM_TIMER。

  ③)修改代码,通过发送WM_TIMER消息启动和销毁启动画面

  1)定义对话框类的变量

  在MainFrm.h文件头部添加#include "SplashDlg.h",并在CMainFram类的定义中加上公用变量CSplashDlg *Splash。

  2)添加计时器消息相应函数代码

void CMainFrame::OnTimer(UINT nIDEvent)
{
 if(Splash->IsWindowVisible()){
  Splash->SetActiveWindow(); //把启动画面设置为当前活动窗口
  Splash->UpdateWindow();
  Sleep(2000); //修改此处可更改画面显示时间
  Splash->SendMessage(WM_CLOSE); //关闭对话框
 }
 else{
  SetActiveWindow();
  KillTimer(1) ; //清除WM_TIMER事件
 }
}
  3)修改框架生成函数OnCreate()

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
 SetTimer(1,0,NULL); //添加ID为1的WM_TIMER事件
 Splash=new CSplashDlg();
 Splash->Create(IDD_DIALOG1);
 Splash->ShowWindow(SW_SHOW);
 …
}
  4.制作基于对话框的应用程序启动画面

  以上几种方法都不能给基于对话框的应用程序做启动画面,下面介绍一种方法给基于对话框的应用程序做启动画面。基于对话框的应用程序没有主框架,因此不能采用前面几种方法制作启动画面。不过我们可以把方法一建立起的启动画面文件移植过来,然后,对程序进行一些修改。

  (1)参照方法一建立基于单文档的工程Splash。

  (2)建立基于对话框的工程Cover。

  (3)文件移植

  ①将Splash1.cpp 和Splash1.h 两个文件从方法一建立的Splash工程拷贝到Cover工程中,并且分别加入到Source Files和Header Files中;

  ②导入位图文件到工程的资源中,改ID为IDB_SPLASH。

  (4)修改代码,实现启动画面的调用

  ①添加CCoverApp 的InitInstance() 函数代码

#include "Splash1.h" //加在Cover.cpp文件的头文件调用部位
BOOL CCoverApp::InitInstance()
{
 CCommandLineInfo cmdInfo;
 ParseCommandLine(cmdInfo);
 CSplashWnd::EnableSplashScreen(cmdInfo.m_bShowSplash);

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

共2页: 上一页 1 [2] 下一页
最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名
注册
热点关注
相关文章
IDC资讯 虚拟主机 域名注册 托管租用 vps主机 智能建站
网站运营 建站经验 策划盈利 搜索优化 网站推广 免费资源
网站联盟 联盟新闻 联盟介绍 联盟点评 网赚技巧
行业资讯 业界动态 搜索引擎 网络游戏 门户动态 电子商务 广告传媒
网络编程 Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术 Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷 Internet Explorer
网页制作 FrontPages Dreamweaver Javascript css photoshop fireworks Flash
程序设计 Java技术 C/C++ VB delphi
网络知识 网络协议 网络安全 网络管理 组网方案 Cisco技术
操作系统 Win2000 WinXP Win2003 Mac OS Linux FreeBSD
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 价格总览 | 资讯中心 | 友情链接 | 网站地图 | 招贤纳士 | RSS