您的位置:首页 > 其它

基于单文档/视图结构的应用程序中添加启动画面

2013-09-29 16:50 316 查看
启动画面是程序在启动前显示的界面,用于显示软件的设计、版权等信息,或者告诉用户正在加载应用程序,请耐心等待。这里重要是加载一幅位图来作为程序的启动画面。

方法一:利用组件库中的Splash Screen组件

这个方法非常的简单,所以关于利用组件库中的Splash Screen组件的方法这里就不在介绍。

方法二:自己制作启动画面

步骤:

1. 创建一个基于MFC的单文档应用程序,工程名为Splash。

2. 创建一个启动窗口类,类名为CSplashScreen,如图所示:



3. 在资源中插入位图资源

打开VC++的资源编辑器,用鼠标右键单击Resources文件夹,选择Import命令,插入所制作的位图。如果位图超过256色,VC会弹出一个对话框,提示位图已经插入但不能在位图编辑器中显示,确定即可。位图ID为IDB_BITMAP1。

4. 在 CSplashScreen类中添加成员变量m_bitmap,如图:



5. 在CSplashScreen类中添加Create()成员函数,在该函数中装入启动窗口中显示的位图,以及在屏幕中央创建该窗口。

void CSplashScreen::Create(UINT nBitmapID)
{
m_bitmap.LoadBitmap(nBitmapID);
BITMAP bitmap;
m_bitmap.GetBitmap(&bitmap);
int x=(::GetSystemMetrics(SM_CXSCREEN)-bitmap.bmWidth)/2;
int y=(::GetSystemMetrics(SM_CYSCREEN)-bitmap.bmHeight)/2;
CRect rect(x,y,x+bitmap.bmWidth,y+bitmap.bmHeight);
CreateEx(0,AfxRegisterWndClass(0),"",WS_POPUP|WS_VISIBLE|WS_BORDER,rect,NULL,0);
}

6. 在CSplashScreen类中添加一个WM_PAINT消息处理函数到该窗口类中,在这里用BitBlt()把位图绘制到屏幕上。

void CSplashScreen::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
BITMAP bitmap;
m_bitmap.GetBitmap(&bitmap);
CDC dcComp;
dcComp.CreateCompatibleDC(&dc);
dcComp.SelectObject(&m_bitmap);
// draw bitmap
dc.BitBlt(0,0,bitmap.bmWidth,bitmap.bmHeight,&dcComp,0,0,SRCCOPY);
// Do not call CFrameWnd::OnPaint() for painting messages
}

7. 把启动窗口插入到主框架类的OnCreate()函数中,这时需要在前面包含头文件#include "SplashScreen.h"。

为了使启动窗口停留足够长的时间以确保读取显示的信息;应对应用程序进行延时处理。加上Sleep()函数。

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
CSplashScreen wndSplash;             //创建启动窗口类的实例
wndSplash.Create(IDB_BITMAP1);
wndSplash.UpdateWindow();           //send WM_PAINT
Sleep(2000);
return 0;
}


结果画面:



注意:也可以把启动窗口类插入到应用程序类的InitInstance()函数中。

参考:http://blog.sina.com.cn/s/blog_4a87020b010005dy.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: