mfc启动画面

目标


用一张位图来作为启动画面,在进入程序时显示。

策略

在应用程序类的I n i t I n s t a n c e
()函数中,在最早时刻创建启动窗口。启动窗口用一个位图类显示在普通窗口中。

步骤

1.       
创建一个启动窗口类

1)     
用ClassWizard创建一个从一般CWnd类(当然也可以是CFrameWnd类)派生的普通窗口类。如图所示:

2)     
添加Create()成员函数到该类,在该函数中装入启动窗口中显示的位图,以及在屏幕中央创建该窗口。

void CWzdSplash::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);

}

3)     
用ClassWizard添加一个WM_PAINT消息处理函数到该窗口类中,在这里用BitBlt()把位图绘制到屏幕上。

void
CWzdSplash::OnPaint()

{

CPaintDC dc(this); // device
context for painting

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);

}

2.把启动窗口类插入到InitInstance()函数中

1) 在应用程序类的InitInstance()函数的开始处,创建该启动类的一个实例,调用它的Create(),并强制它进行绘制。

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

wndSplash.Create(IDB_BITMAP1);

wndSplash.UpdateWindow();          
//send WM_PAINT

2) 因为启动窗口类创建在堆栈中,一旦InitInstance()返回,该窗口将被自动销毁,因此,如果应用程序花费大量时间进行初始化,则不必采用在应用程序中加延时的方法,使启动窗口停留足够长的时间以确保读取显示的信息;如果应用程序花费很少时间进行初始化,或者担心高速机器把启动窗口变成影像,添加下面代码行到InitInstance(
)的某个地方以对应用程序进行延时处理。

//
add if splash screen too short

Sleep(2000);

至此,一个具有启动画面的小程序完成了,大家可以试试看它的运行效果。

mfc启动画面,布布扣,bubuko.com

时间: 2024-10-16 23:27:23

mfc启动画面的相关文章

MFC添加启动画面与CImage结合版

最近做一个启动画面,发现Splash只能加载bitmap,发现bitmap图片效果不太好,所以找了下在C++中有什么可以加载PNG或者JPG等类型的图片,在网上找半天后,发现CImage这个类相当好用,而且还可以和CBitmap相互转换,这样我只要修改一小段代码,就可以实现用位图以外的图片来做启动画面了,在找图片的时候也不这么麻烦,因为CImage基本支持多种图片格式,很好用.详细可以自行百度哦.下面附上代码. 1.在工程中添加C++类,CWzdSplash.基类是CWnd 添加代码: #ifn

MFC之窗口修改工具栏编程状态栏编程程序启动画面

1窗口外观的修改 (1)修改在CMainFrame::preCreateWindow(CREATESTRUCT& cs) 修改标题:cs.style&=FWS_ADDTOTITLE; cs.lpszNamw="new title"; (2)窗口创建之后修改外观 在CMainframe::Create()中调用SetWindowLong(HWND hwnd,.....)根据参数修改指定的项 所有从CWnd派生的类都是窗口类在这些窗口类中都有一个公有的成员变量保存了和着个窗

MFC,splash启动画面(改)

1 #ifndef _SPLASH_SCRN_ 2 #define _SPLASH_SCRN_ 3 4 5 //这是一个启动画面类,这里注释便不多写了,网上有 6 #pragma once 7 // CWzdSplash 8 class CWzdSplash : public CWnd 9 { 10 DECLARE_DYNAMIC(CWzdSplash) 11 public: 12 CWzdSplash(); 13 virtual ~CWzdSplash(); 14 protected: 15

MFC之窗体改动工具栏编程状态栏编程程序启动画面

1窗体外观的改动 (1)改动在CMainFrame::preCreateWindow(CREATESTRUCT& cs) 改动标题:cs.style&=FWS_ADDTOTITLE; cs.lpszNamw="new title"; (2)窗体创建之后改动外观 在CMainframe::Create()中调用SetWindowLong(HWND hwnd,.....)依据參数改动指定的项 全部从CWnd派生的类都是窗体类在这些窗体类中都有一个公有的成员变量保存了和着个窗

【VC编程技巧】窗体?3.5对单文档或者多文档程序制作启动画面

(一)概要: 文章描述了怎样通过Visual C++ 2012或者Visual C++ .NET,为单文档或者多文档程序制作启动画面.在Microsoft Visual Studio 6.0中对于单文档程序(SDI)我们可以很方便利用微软提供的组件Visual C++ Component (Splash Screen).因为在Microsoft Visual Studio 6.0以后的版本或者Visual C++ .NET没有提供这个组件,我们可以通过自定义对话框来实现Splash Screen

纯C++打造的Splash Screen类(打造专业的启动画面)

Introduction 每一个应用程序可能都需要一个"about box"和程序启动时一个"splash screen"(启动画面),大多数开发者都使用自带的""about dialog"".我创建了一个类CSplashScreen,都可以处理这两者,使开发变的容易,有趣!从小的对话框组件程序到需要加在几分复杂程序,我都会使用这个类. 这个类有两个文件组成,SplashScreen.h 和 SplashScreen.cpp.

Android App启动画面实现

app打开时都会有个启动画面(一幅图.一个提示之类的),画面停留2-3秒,然后结束掉自己,启动要呈现的第一个activity. Handler的postDelayed方法就很适合实现这个功能.它相当于一个定时器,可以使所在绑定了该handler的所在线程延时执行一段代码. postDelayed(Runnable r,long uptimeMillis); 第一个参数是要延时执行的代码段.第二个参数是要延长多少秒.     private Handler mHandler = new Handl

为你的Web程序加个启动画面

http://www.cnblogs.com/Wayou/p/3675822.html .Net开发者一定熟悉下面这个画面: 这就是宇宙第一IDE Visual Studio的启动画面,学名叫Splash Screen(或者Splash Window).同样,Javar们一定对Eclipse的启动画面不会陌生.不只是IDE,很多桌面程序都会有这个Splash 窗口,在程序进行初始化时显示. 这方面做得最赞的非Adobe旗下的设计类软件莫数了,毕竟是搞艺术出身的啊.博主从PS 8.0用起,每次升级

C#: 启动画面设计

Windows Form经常会在启动主界面的时候预先有启动画面,这也是因为用户体验的需要,用户知道已经启动application,而不是在load resource的时候等待.因此这里不能用单线程的思路,单单只是设计一个界面而已,而需要在splash画面的时候同时Load resource.那么这个技术有两个线程,一个是splash画面,二是load resource.搜了一些资料,下面进行一些总结: 1 using System; 2 using System.Collections.Gene