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

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

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

作者/NorthTibet

下载源代码

很多基于对话框的程序都有一个启动画面,那么如何为自己的对话框程序也加一个这样的画面呢?本文将一步一步教你实现每一个细节。其实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);

}

编译运行程序。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航