启动画面是应用程序启动时展示给用户的一个临时界面,它不仅能够提升用户体验,还能展示应用程序的品牌形象。本文将向展示如何在Visual Studio环境下的MFC应用程序中快速添加启动画面。
首先,需要准备一张想要用作启动画面的位图图片。本文以Visual Studio2005为例进行说明,但同样适用于更早的版本。
打开项目资源视图,展开资源树,右键点击.rc文件,选择“添加资源”。在弹出的对话框中选择“位图”,然后点击“导入”按钮。浏览到想要用作启动画面的BMP文件位置,并点击打开。
在资源视图中展开位图分支,将其ID更改为IDB_SPLASH。
右键点击对话框分支,选择“插入对话框”。如果新对话框没有在资源编辑器中打开,双击新创建的IDD_DIALOG1打开它。删除对话框中的“确定”和“取消”按钮。
更改对话框的以下属性:
会看到一条细蓝线,用鼠标拖动它直到它与对话框的边缘对齐。
从工具箱中拖动一个图片控件到对话框中,并将其放置在左上角。根据启动画面图片的大小,调整对话框的大小,使其比图片稍大。可能需要再次调整细蓝线的大小。
选中图片控件,将其ID更改为IDC_SPLASH,类型更改为Bitmap。会发现,当类型设置为Bitmap后,图像属性不再是灰色的。使用下拉菜单将图像属性更改为IDB_SPLASH。
调整对话框大小,使其刚好容纳图片。
右键点击对话框,选择“添加类”。设置类名为CDialogSplash,然后点击完成。
在类视图中选择CDialogSplash,然后在属性区域点击“消息”按钮,滚动到WM_TIMER。使用下拉菜单为CDialogSplash类添加一个OnTimer函数。
void CDialogSplash::OnTimer(UINT_PTR nIDEvent)
{
CDialog::OnOK();
}
在类视图中选择CDialogSplash,然后点击“重写”按钮,滚动到OnInitDialog。使用下拉菜单为CDialogSplash类添加一个OnInitDialog函数。更新代码如下:
BOOL CDialogSplash::OnInitDialog()
{
CDialog::OnInitDialog();
CRect rectPic, rectWin;
GetWindowRect(&rectWin);
m_pic.GetWindowRect(&rectPic);
MoveWindow(rectWin.left, rectWin.top, rectPic.Width(), rectPic.Height());
return TRUE;
}
大多数人希望在主程序加载完成之前显示启动画面,因此将在Application类的InitInstance函数的顶部附近调用启动画面。
在类视图中点击应用程序类。以本示例中创建的演示项目为例,选择CEasySplashApp。
右键点击CEasySplashApp,选择“添加变量”。将访问权限更改为protected,类型更改为CDialogSplash,名称更改为m_splash。
在类视图中双击CEasySplashApp类的InitInstance函数,并在函数顶部添加以下代码:
BOOL CEasySplashApp::InitInstance()
{
CWinApp::InitInstance();
m_splash.Create(IDD_SPLASH, m_pMainWnd);
m_splash.ShowWindow(SW_SHOW);
m_splash.SetTimer(1, 2000, NULL);
}
编译项目并运行它。应该能够在程序启动时看到启动画面,并在计时器运行完毕后关闭。
在演示项目中,添加了一个按钮来再次显示启动画面,这样就不必一直重新启动程序来查看启动画面了。