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

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

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

#pragma once
// CWzdSplash
class CWzdSplash : public CWnd
{DECLARE_DYNAMIC(CWzdSplash)
public:CWzdSplash();virtual ~CWzdSplash();
protected:DECLARE_MESSAGE_MAP()
public:CBitmap m_bitmap;
//  void Create(void);void Create(UINT nBitmapID);afx_msg void OnPaint();afx_msg void OnTimer(UINT_PTR nIDEvent);
};

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

// WzdSplash.cpp : 实现文件
//
#include "stdafx.h"
#include "TinyPlusCompiler.h"
#include "WzdSplash.h"
// CWzdSplash
IMPLEMENT_DYNAMIC(CWzdSplash, CWnd)CWzdSplash::CWzdSplash()
{
}
CWzdSplash::~CWzdSplash()
{
}
BEGIN_MESSAGE_MAP(CWzdSplash, CWnd)ON_WM_PAINT()ON_WM_TIMER()
END_MESSAGE_MAP()
// CWzdSplash 消息处理程序
void CWzdSplash::Create(UINT nBitmapID)
{m_bitmap.LoadBitmap(nBitmapID);BITMAP bitmap;m_bitmap.GetBitmap(&bitmap);//CreateEx(0,AfxRegisterWndClass(0),"",WS_POPUP|WS_VISIBLE|WS_BORDER,0,0,bitmap.bmWidth,bitmap.bmHeight,NULL,0);CreateEx(0,AfxRegisterWndClass(0, AfxGetApp()->LoadStandardCursor(IDC_ARROW)),NULL, WS_POPUP | WS_VISIBLE, 0, 0, bitmap.bmWidth, bitmap.bmHeight, NULL , NULL);
}
void CWzdSplash::OnPaint()
{// TODO: 在此处添加消息处理程序代码// 不为绘图消息调用 CWnd::OnPaint()CPaintDC dc(this); // device context forpaintingBITMAP 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);
}
void CWzdSplash::OnTimer(UINT_PTR nIDEvent)
{// TODO: 在此添加消息处理程序代码和/或调用默认值//CWnd::OnTimer(nIDEvent);DestroyWindow(); //销毁初始画面窗口
}

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

 ///显示Splash,2010-10-15///CWzdSplash wndSplash;                 //创建启动窗口类的实例wndSplash.Create(IDB_SPLASH);wndSplash.CenterWindow();wndSplash.UpdateWindow();          //send WM_PAINTSleep(1500);wndSplash.DestroyWindow();//销毁初始画面窗口

注明一下要注意的地方:wndSplash.Create(IDB_SPLASH);中的IDB_SPLASH是在添加位图资源时添加进来的资源ID,自己可以定义自己所喜欢的启动图画。

如果不使用Sleep()函数让线程休眠几秒,我们很难看到这个启动画面,但这样存在一个问题,让线程休眠不是一个好的办法,感觉应该用定时器去实现这功能的,但不是很熟悉定时器的使用,研究一下再把它改过来。

原文地址:http://blog.csdn.net/libenqing/article/details/5961991#

给 VS2008 / VS2010 MFC 项目添加启动画面相关推荐

  1. iOS 应用添加启动画面以及App应用图标的方法

    在ios开发中经常要为项目添加启动画面,目的主要有两个:一.更加美观,二.在启动画面呈现的同时加载初始化内部的项目数据. 注意在ios开发中,需要的是png格式的图片,仅仅良好的支持这一种格式,有钱就 ...

  2. C# Form窗体添加启动画面

    C# Form窗体添加启动画面 目录 C# Form窗体添加启动画面 一.找图片 二.添加窗体 三.提前加载图片窗体 四.自定义显示代码   如果要使你的window软件界面显得牛逼点,就来个驱动图片 ...

  3. matlab设置启动画面,为Matlab的GUI添加启动画面

    <为Matlab的GUI添加启动画面>由会员分享,可在线阅读,更多相关<为Matlab的GUI添加启动画面(2页珍藏版)>请在金锄头文库上搜索. 1.为 Matlab 的 GU ...

  4. ios添加 启动画面_iOS 两种设置启动图方式的 bug 汇总

    楼主最近几天一直在纠结这个,忙到最后发现是 Apple 的锅,臣妾真搞不定呀 1.单独使用 LaunchImage 来设置启动图时: ①iOS9 系统的手机,在 APP 从后台通过 openURL 拉 ...

  5. electron-vue 项目添加启动loading动画问题

    Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...

  6. VC四种程序启动画面的制作方法

    使用启动画面一是可以减少等待程序加载过程中的枯燥感(尤其是一些大型程序):二是可以用来显示软件名称和版权等提示信息.怎样使用VC++制作应用程序的启动画面呢?本文提供四种方法,前三种适用于基于文档的应 ...

  7. VS2010 MFC中 单独添加ODBC数据库记录集类(CRecordset)方法

    基于VS2010 MFC的项目是之前建好的,后来需要添加数据库. 方法分享于此. 1.  打开自己的项目,项目->添加类. 2. 选MFC ODBC使用者,点右下角的添加. 3. 点数据源. / ...

  8. VS2010安装项目的系统必备中添加.NET 2.0

    VS2010安装项目的系统必备中没有.NET 2.0,不过我们可以从VS2008的程序文件中找到 .NET 2.0 的系统必备安装包. 安装了VS2008 的 C:\Program Files\Mic ...

  9. cordova 项目添加splash启动界面

    需求:cordova项目启动添加启动界面,并在设备初始化完成后自动隐藏splash 1.新建项目 cordova create Mypro com.test.pro proName 2.添加平台 cd ...

最新文章

  1. Luogu P2580 于是他错误的点名开始了 Trie树 字典树
  2. pat1049. Counting Ones (30)
  3. Hadoop HBase概念学习系列之HBase里的客户端和HBase集群建立连接(详细)(十四)...
  4. std::string删除首字符
  5. 漫画:程序员真的是太太太太太太太太难了!
  6. SAP License:做顾问要有一颗平常心
  7. 在Python中模拟do-while循环?
  8. 重写FileUpload控件让它可以显示上传后的文件名
  9. 基于LVDS的高速自同步串行传输系统的研究
  10. sql注入工具、检测及手工注入集合
  11. 免费网页设计学习课程,视频以及设计工具大全,网页设计不过如此!!!
  12. [精简]快速认识钢琴键盘
  13. python函数调用键盘热键_Python自定义快捷键,热键,HotKey
  14. JS的unshift()和shift()
  15. 求模 和 求余 的区别
  16. 微信小程序tabBar改变图片大小方法
  17. 【TWVRP】基于matlab粒子群算法求解带时间窗的车辆路径规划问题(总成本最低)【含Matlab源码 2590期】
  18. easyExcel的一些操作
  19. 简历里的期望薪资应该写多少比较合适呢
  20. Android从一个应用程序启动第三方应用app

热门文章

  1. Interesting Finds: 2008.04.06
  2. HDU1572 下沙小面的(2)【全排列】
  3. CSP202009-2 风险人群筛查(100分)【序列处理】
  4. HDU2020 绝对值排序【入门】
  5. Matlab Tricks(二十四)—— 将一副图像逆时针旋转 180°
  6. matplotlib 可视化 —— 移动坐标轴(中心位置)
  7. Python 2.x vs Python 3.x(四)—— TypeError: unhashable type
  8. [面试] C/C++ 语法细节拾遗
  9. Normalization的方法
  10. oracle call 存储过程 带out_详解oracle数据库存储过程调试方法