VS2008/VS2010 MFC项目添加启动画面的添加

VS2008/VS2010 MFC项目添加启动画面

VC6.0时代,我们通过在MFC工程中插入Splash组件来简单方便的实现这个功能,但在VS2008以后就没有了这个功能,所以如果想给自己的程序添加一个显示Logo的启动画面,就需要自己添加代码来实现,参考了下VC6.0中这个Splash组件添加后的代码,就很容易在自己的项目里实现这个功能。如下图。

 

 

 

首先,在菜单的“项目”中选择“类向导”,生成一个启动画面的Splash类。

 

 

然后,实现代码主要是在CwzdSplash类的头文件和cpp文件中实现。在CwzdSplash类的头文件中我们添加下面的代码:

 

view plaincopy to clipboardprint?

01.#pragma once  

02.// CWzdSplash  

03.class CWzdSplash : public CWnd  

04.{  

05.    DECLARE_DYNAMIC(CWzdSplash)  

06.public:  

07.    CWzdSplash();  

08.    virtual ~CWzdSplash();  

09.protected:  

10.    DECLARE_MESSAGE_MAP()  

11.public:  

12.    CBitmap m_bitmap;  

13.//  void Create(void);  

14.    void Create(UINT nBitmapID);  

15.    afx_msg void OnPaint();  

16.    afx_msg void OnTimer(UINT_PTR nIDEvent);  

17.}; 

 

CwzdSplash类的cpp文件中我们添加下面的代码:

view plaincopy to clipboardprint?

01.// WzdSplash.cpp : 实现文件  

02.//  

03.#include "stdafx.h"  

04.#include "TinyPlusCompiler.h"  

05.#include "WzdSplash.h"  

06.// CWzdSplash  

07.IMPLEMENT_DYNAMIC(CWzdSplash, CWnd)  

08.    CWzdSplash::CWzdSplash()  

09.{  

10.}  

11.CWzdSplash::~CWzdSplash()  

12.{  

13.}  

14.BEGIN_MESSAGE_MAP(CWzdSplash, CWnd)  

15.    ON_WM_PAINT()  

16.    ON_WM_TIMER()  

17.END_MESSAGE_MAP()  

18.// CWzdSplash 消息处理程序  

19.void CWzdSplash::Create(UINT nBitmapID)  

20.{  

21.    m_bitmap.LoadBitmap(nBitmapID);  

22.    BITMAP bitmap;  

23.    m_bitmap.GetBitmap(&bitmap);  

24.    //CreateEx(0,AfxRegisterWndClass(0),"",WS_POPUP|WS_VISIBLE|WS_BORDER,0,0,bitmap.bmWidth,bitmap.bmHeight,NULL,0);  

25.    CreateEx(0,  

26.            AfxRegisterWndClass(0, AfxGetApp()->LoadStandardCursor(IDC_ARROW)),  

27.            NULL, WS_POPUP | WS_VISIBLE, 0, 0, bitmap.bmWidth, bitmap.bmHeight, NULL , NULL);  

28.}  

29.void CWzdSplash::OnPaint()  

30.{  

31.    // TODO: 在此处添加消息处理程序代码  

32.    // 不为绘图消息调用 CWnd::OnPaint()  

33.    CPaintDC dc(this); // device context forpainting  

34.    BITMAP bitmap;  

35.    m_bitmap.GetBitmap(&bitmap);  

36.    CDC dcComp;  

37.    dcComp.CreateCompatibleDC(&dc);  

38.    dcComp.SelectObject(&m_bitmap);  

39.    // draw bitmap  

40.    dc.BitBlt(0,0,bitmap.bmWidth,bitmap.bmHeight,&dcComp,0,0,SRCCOPY);  

41.}  

42.void CWzdSplash::OnTimer(UINT_PTR nIDEvent)  

43.{  

44.    // TODO: 在此添加消息处理程序代码和/或调用默认值  

45.    //CWnd::OnTimer(nIDEvent);  

46.    DestroyWindow(); //销毁初始画面窗口  

47.} 

 

最后在项目的主窗口视图的Create函数中添加下面的实例化过程就可以显示出我们自定义的Logo启动画面了:

 

 view plaincopy to clipboardprint?

01.///显示Splash2010-10-15///  

02.       CWzdSplash wndSplash;                 //创建启动窗口类的实例  

03.wndSplash.Create(IDB_SPLASH);  

04.wndSplash.CenterWindow();  

05.wndSplash.UpdateWindow();          //send WM_PAINT  

06.Sleep(1500);  

07.wndSplash.DestroyWindow();//销毁初始画面窗口 

 

 

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/libenqing/archive/2010/10/24/5961991.aspx

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值