启动界面也即欢迎界面,即在应用程序启动时一闪而过的窗体界面。启动界面可以为用户提示一定的信息,用户无须对其进行任何的操作。启动界面是应用程序中最先显示给用户的一个界面,主要用于数据加载的延时。在数据加载时显示这样的界面,可以避免用户由于等待时间过长而产生焦虑。
一 启动界面的设计
1. 新建一个MFC基于对话框的应用程序,工程名为LibraryManagementSystem。
注意:这里仅仅介绍启动界面的实现,其他的过程不做理会。
2.新建一个对话框资源,打开对话框的属性窗口。选择Style(外观)选项卡,将Border属性设置为None
3 .在工作区窗口中选择ResourceView选项卡,导入一个位图资源。
注意:这个位图资源即为启动界面显示的那张图片
4 .向对话框中添加1个图像控件(picture control),并通过图像控件显示导入的位图资源。具体操作为:选择图像控件的属性,属性栏中设置为:
首先Type选择Bitmap,然后在Image中选择导入的那张启动画面的位图资源。
二 启动界面的淡入淡出效果
新添加头文件和源文件,用于实现启动画面相关的功能。分别命名为StartUp.h和StartUp.cpp
1.在对话框的头文件中定义常量,代码如下:
- #define AW_BLEND 0x00080000 //淡入淡出
- #define AW_HIDE 0x00010000 //隐藏
2 .在对话框的OnInitDialog函数中设置对话框显示时的淡入淡出效果,代码如下:
- BOOL CStartUp::OnInitDialog()
- {
- CDialogEx::OnInitDialog();
- //对话框处于中心位置
- CenterWindow();
- //设置淡入淡出风格
- DWORD dwStyle = AW_BLEND;
- //在设置淡入淡出效果时需要加载User32.DLL动态链接库
- //导入User32.DLL动态链接库
- HINSTANCE hInst=LoadLibrary(_T("User32.DLL"));
- //函数结构
- typedef BOOL(WINAPI MYFUNC(HWND,DWORD,DWORD));
- //声明函数
- MYFUNC* AnimateWindow;
- //调用函数
- AnimateWindow=(MYFUNC*)::GetProcAddress(hInst,"AnimateWindow");
- AnimateWindow(this->m_hWnd,750,dwStyle);
- FreeLibrary(hInst);
- SetTimer(1,3000,NULL);
- return true;
- }
3 .处理WM_TIMER消息,在定时器中以淡入淡出效果关闭启动界面,代码如下:
- void CStartUp::OnTimer(UINT nIDEvent)
- {
- DWORD dwStyle=AW_BLEND;
- HINSTANCE hInst=LoadLibrary(_T("User32.DLL"));
- //typedef BOOL(WINAPI MYFUNC(HWND,DWORD,DWORD));
- typedef BOOL(WINAPI MYFUNC(HWND,DWORD,DWORD));
- MYFUNC* AnimateWindow;
- AnimateWindow=(MYFUNC*)::GetProcAddress(hInst,"AnimateWindow");
- AnimateWindow(this->GetSafeHwnd(),750,AW_HIDE|dwStyle);
- FreeLibrary(hInst);
- //关闭定时器
- KillTimer(1);
- //关闭启动界面对话框
- CDialogEx::OnOK();
- CDialogEx::OnTimer(nIDEvent);
- }
4 .显示启动界面
程序启动时首先显示的是启动界面,在主对话框界面对应的源文件(即LibraryManagementSystemDlg.cpp)中的OnInitDialog函数中添加代码:
- BOOL CLibraryManagementSystemDlg::OnInitDialog()
- {
- 。。。。
- CStartUp startupDlg;
- startupDlg.DoModal();
- }
最后不要忘记了添加头文件的引用,#include "StartUp.h"。