当前位置: 首页 > 图文教程 > 开发语言 > VC++ > 如何给基于对话框的应用加启动画面

VC++
面试题目:猫吃老鼠问题的求解
一个最基本的有限元计算程序
简单的表达式求值
C程序移植到VC开发环境下
一个小语言的词法分析程序
A/B 向上取整的方法
马走日棋盘算法
一种随机抽题的简单算法
clone模式在平衡排序二叉树实现中的应用
递归的应用 -- 最简单分形图形实现
比较数据排序前后的查找次数
根据前序和中序序列生成二叉树
如何用CZip/CUnzip类压缩/解压缩文件
使用 random_shuffle() 算法随机化序列元素
Ceb解除打印屏蔽实战
基于SHA-256的HMAC文件校验器
模拟信息加密流程图简介
关于数据校验
浅谈利用RSA算法防止非法注册机的制作
加密它:用新的高级加密标准(AES)保持你的数据安全

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 69 ::
收藏到网摘: n/a

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


作者/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); }
编译运行程序。