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

来源:互联网 发布:大一知乎 编辑:程序博客网 时间:2024/05/18 23:55

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

方法一:利用组件库中的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 bitmapdc.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

原创粉丝点击