`

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

 
阅读更多

在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 forpainting
	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);
}
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_PAINT
	Sleep(1500);
	wndSplash.DestroyWindow();//销毁初始画面窗口

 

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

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

 

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

分享到:
评论

相关推荐

    vs2008下MFC如何添加启动画面

    在Visual Studio 2008 (VS2008) 中开发MFC应用程序时,有时候我们需要为应用添加一个启动画面,以提升用户体验。下面详细解释如何在VS2008的MFC环境中实现这一功能: 1. **创建工程**: 首先,你需要创建一个单...

    给MFC项目添加启动画面

    大程序启动时,一般都是先弹出来一个画面,然后再进入程序。在VC里面怎么才能实现?看完这个文档大家就都会了!

    MFC程序启动画面

    创建启动画面的主要目标是在程序真正加载之前显示一个具有品牌标识或进度指示的窗口,给用户一个视觉反馈,表明程序正在初始化。以下是实现这一功能的基本步骤: 1. **创建MFC项目**:首先,在Visual Studio中选择...

    mfc 自制启动画面

    这将自动生成一个基本的MFC项目框架。 2. **设计启动画面**: 启动画面通常是一个简单的窗口,展示你的应用图标或品牌信息。在MFC中,我们可以使用CDialog派生类来创建自定义对话框。打开资源视图,添加一个新的...

    利用Visual C++制作应用程序启动画面

    本篇文章将详细介绍如何利用Visual C++(简称VC++)为应用程序添加启动画面,并提供了四种实现方法:前三种适用于基于文档的应用程序,而第四种则适用于基于对话框的应用程序。 #### 方法一:使用SplashScreen控件 ...

    VS2010启动画面

    ### VS2010中为MFC应用程序添加启动画面的详细步骤 #### 一、启动画面的概念 启动画面,也称为启动屏幕或启动页,是软件应用启动时首先展示给用户的界面,通常用来提高用户体验,增加产品的品牌识别度。对于Windows...

    MFC- 软件启动画面之浅入深出

    根据给定的信息,本文将详细解析MFC(Microsoft Foundation Classes)中的软件启动画面(Splash Screen)的实现原理与步骤。 ### MFC启动画面浅入深出 #### 一、启动画面的基本概念 启动画面(Splash Screen)是...

    软件启动画面

    2. 添加启动画面类:在MFC中,我们通常会创建一个新的CDialog派生类来实现启动画面。这个类应包含一个资源ID,用于在设计时创建和编辑启动画面的外观。 3. 设计启动画面:使用Visual Studio的资源编辑器,为启动...

    (源码)VC/MFC在VS2017下如何实现软件启动时的欢迎画面和用户登录画面

    如何实现启动软件时出现一个欢迎画面。 如何在欢迎画面后实现一个用户登录界面。 如何在对话框窗口上动态添加一个文本(CStatic),并改变文本的字体、字的大小等。 如何改变对话框以及对话框上的控件的背景颜色。 ...

    AVI启动画面VC++MFC

    通过以上步骤,你就可以在VC++ MFC项目中成功集成AVI启动画面了。这个功能能够为你的应用程序增添一份专业感,提升用户的第一印象。在实际开发过程中,记得根据项目的具体需求进行适当的调整和优化。

    VC2010 MFC 滚动条窗口显示图像

    - 启动Visual Studio 2010,选择“文件”>“新建”>“项目”,然后在模板中选择“MFC应用程序”。 - 在“应用程序向导”中,确保选中“多文档”选项,然后完成项目的创建。 2. **添加CScrollView派生类**: - 在...

    vs2010mfc对话框调用摄像头人脸识别

    在本文中,我们将深入探讨如何在VS2010 MFC(Microsoft Foundation Classes)应用程序中实现摄像头调用以及人脸识别功能。MFC是微软提供的一种C++库,它为Windows应用程序开发提供了一种结构化的方式。结合OpenCV库...

    MFC启动界面的制作

    - **设置定时器**:同样在`OnCreate`中,使用`SetTimer`函数设置定时器,控制启动画面的显示时间。 - **使用AnimateWindow实现淡入**:调用`AnimateWindow`函数实现窗口的渐显效果。 ##### 3.4 实现淡出效果 4. *...

    vc 添加Spalsh启动画面

    在开发Windows应用程序时,我们有时希望在主程序启动前展示一个短暂的启动画面,即Splash Screen,以提高用户体验,展示公司品牌或者加载程序资源。在Visual C++(简称VC)环境中,实现这一功能并不复杂。本教程将...

    MFC基于对话框下的OpenGL

    1. **创建MFC对话框项目**:启动Visual C++,新建一个MFC应用程序项目,选择“对话框”作为应用程序类型。 2. **添加OpenGL支持**:在资源视图中,右键点击对话框资源,选择“插入”,然后在弹出菜单中选择“通用...

    打开摄像头-MFC_C++_调用摄像头_MFC_

    首先,我们需要设置一个新的MFC项目。在Visual Studio 2010中,选择"文件" -> "新建" -> "项目",然后在模板列表中找到"MFC应用程序",并按照向导的提示完成项目创建过程。确保在项目设置时选择你需要的工程类型,...

    Init_VC.rar_启动画面

    这个压缩包包含了一个用VC编写的启动画面的源代码实例,对于学习如何在自己的程序中添加启动画面的开发者来说,这是一个非常实用的参考资料。 首先,让我们了解启动画面的基本概念。启动画面是应用程序在完全启动...

    100个MFC实例程序

    5. **程序启动界面**:MFC提供了一种机制来定制应用程序的启动界面,例如启动画面或欢迎页。这通常涉及到CDialog或CFormView类的使用,通过这些类可以创建对话框或视图作为启动界面,展示公司logo、版权信息或者软件...

    基于vs2010的MFC+opencv2.3.1开启摄像头

    在本项目中,我们主要探讨如何使用Visual Studio 2010(VS2010)结合Microsoft Foundation Class(MFC)库以及OpenCV 2.3.1来实现摄像头的开启与视频流的捕获。这是一个在Windows平台上进行计算机视觉开发的基础应用...

Global site tag (gtag.js) - Google Analytics