基于单文档/视图结构的应用程序中添加启动画面
2013-09-29 16:50
316 查看
启动画面是程序在启动前显示的界面,用于显示软件的设计、版权等信息,或者告诉用户正在加载应用程序,请耐心等待。这里重要是加载一幅位图来作为程序的启动画面。
方法一:利用组件库中的Splash Screen组件
这个方法非常的简单,所以关于利用组件库中的Splash Screen组件的方法这里就不在介绍。
方法二:自己制作启动画面
步骤:
1. 创建一个基于MFC的单文档应用程序,工程名为Splash。
2. 创建一个启动窗口类,类名为CSplashScreen,如图所示:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202006/28/520673542f025b8cd538ef0e43627e3d)
3. 在资源中插入位图资源
打开VC++的资源编辑器,用鼠标右键单击Resources文件夹,选择Import命令,插入所制作的位图。如果位图超过256色,VC会弹出一个对话框,提示位图已经插入但不能在位图编辑器中显示,确定即可。位图ID为IDB_BITMAP1。
4. 在 CSplashScreen类中添加成员变量m_bitmap,如图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202006/28/8d253dc91e03ed4c829e3cfb1551c798)
5. 在CSplashScreen类中添加Create()成员函数,在该函数中装入启动窗口中显示的位图,以及在屏幕中央创建该窗口。
6. 在CSplashScreen类中添加一个WM_PAINT消息处理函数到该窗口类中,在这里用BitBlt()把位图绘制到屏幕上。
7. 把启动窗口插入到主框架类的OnCreate()函数中,这时需要在前面包含头文件#include "SplashScreen.h"。
为了使启动窗口停留足够长的时间以确保读取显示的信息;应对应用程序进行延时处理。加上Sleep()函数。
结果画面:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202006/28/f40373ca9d155e223dfb67923bad12d7)
注意:也可以把启动窗口类插入到应用程序类的InitInstance()函数中。
参考:http://blog.sina.com.cn/s/blog_4a87020b010005dy.html
方法一:利用组件库中的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
相关文章推荐
- vc基于对话框的应用程序添加启动画面
- 基于对话框的应用程序添加启动画面
- 基于对话框的应用程序添加启动画面
- 让基于对话框的应用程序有启动画面
- 文档视图结构启动过程
- 基于MFC多文档多视图结构的OGRE指北针程序
- 让基于对话框应用程序也有启动画面
- IOS编程教程(八):在你的应用程序添加启动画面
- IOS编程教程(八):在你的应用程序添加启动画面
- 为基于对话框的应用程序设置启动画面
- 真正完美解决vs2008 添加启动画面(基于对话框)
- 设置单文档工程下添加程序启动画面。。
- 打开Excel文档自动启动用户窗体。为Excel文档添加启动画面
- 为你的应用程序添加启动画面
- 给VC基于单文档应用程序添加动画图标
- vs2008 添加启动画面(基于对话框)
- 为Android应用程序添加Splash启动画面
- IOS编程教程(八):在你的应用程序添加启动画面
- 在你的应用程序添加启动画面
- 给VS2008/VS2010 MFC项目添加启动画面