如何给基于对话框的应用加启动画面

如何给基于对话框的应用加启动画面

很多基于对话框的程序都有一个启动画面,那么如何为自己的对话框程序也加一个这样的画面呢?本文将一步一步教你实现每一个细节。其实VC++开发环 境中有一个现成的 Splash Screen 组件,用这个组件很容易实现基于框架类(也就是CMainFrame)的程序的启动画面,那么如果是对话框程序,没有框架类怎么办呢?所以这个组件功能不 是想象的那么强。要实现基于对话框应用程序的启动画面必须另辟蹊径。本文将定制一个C++类:CSplashWnd,用这个类可以增强原来的 Splash Screen 组件功能。它不但可以在用于具有CMainFrame的程序,同时也可以用于基于对话框应用的程序。

  CSplashWnd的使用方法如下:

  思路

  需要改写三个函数:CDialog::OnInitDialog() 
   CWinApp::InitInstance()
   CWinApp::PreTranslateMessage(MSG* pMsg)   
   如果你用应用程序向导(AppWizard)创建工程,那么它会自动在CWinApp.h和CWinApp.cpp文件中产生 OnInitDialog 和 InitInstance 的声明和实现的默认代码,但是与CWinApp::PreTranslateMessage(MSG* pMsg)有关的处理必须自己添加到CWinApp派生类中。

  具体步骤:

  第一步:

  在CDialog::OnInitDialog()方法末尾添加下列代码: // 创建并显示启动画面
  CSplashWnd::ShowSplashScreen(3000, IDB_SPLASH24, this);  
ShowSplashScreen函数的第一个参数是超时时间,以毫秒计算,表示启动画面持续显示的时间;第二个参数是位图图像的资源标示符,表示启动画面显示的图像。最后一个参数是父窗口,此参数可以为NULL。

  第二步:

  在CWinApp::InitInstance()方法的开始处添加如下代码: // Enable the splash screen component based on the command line info.
  CCommandLineInfo cmdInfo;
  ParseCommandLine(cmdInfo);
  CSplashWnd::EnableSplashScreen(cmdInfo.m_bShowSplash);   
这几行代码的作用是让程序能解析和处理命令行信息。

  第三步:

  用类向导(ClassWizard)改写 CWinApp::PreTranslateMessage(MSG* pMsg)方法,并添加如下代码: BOOL CDialogsplApp::PreTranslateMessage(MSG* pMsg)
   {
         // Route messages to the splash screen while it is visible
       if (CSplashWnd::PreTranslateAppMessage(pMsg)) {
        return TRUE;
       }
       return CWinApp::PreTranslateMessage(pMsg);
   }
编译运行程序。

 

 

本文转自:http://tech.ddvip.com/2006-04/11442590403857.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值