在VC++中制作启动屏幕的新方法文档格式.docx

上传人:b****1 文档编号:15333639 上传时间:2022-10-29 格式:DOCX 页数:8 大小:94.86KB
下载 相关 举报
在VC++中制作启动屏幕的新方法文档格式.docx_第1页
第1页 / 共8页
在VC++中制作启动屏幕的新方法文档格式.docx_第2页
第2页 / 共8页
在VC++中制作启动屏幕的新方法文档格式.docx_第3页
第3页 / 共8页
在VC++中制作启动屏幕的新方法文档格式.docx_第4页
第4页 / 共8页
在VC++中制作启动屏幕的新方法文档格式.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

在VC++中制作启动屏幕的新方法文档格式.docx

《在VC++中制作启动屏幕的新方法文档格式.docx》由会员分享,可在线阅读,更多相关《在VC++中制作启动屏幕的新方法文档格式.docx(8页珍藏版)》请在冰豆网上搜索。

在VC++中制作启动屏幕的新方法文档格式.docx

  //设置启动窗口背景,在整个窗口中充满位图

  CRectlRect;

  m_pic.GetClientRect(&

lRect);

//得到Picture控件的窗口大小

  lRect.NormalizeRect();

  

  //设置位图句柄

  HBITMAPhbitmap=(HBITMAP)LoadImage(NULL,"

splash.bmp"

//更改你喜欢的位图文件

      IMAGE_BITMAP,lRect.Width(),lRect.Height(),

      LR_LOADFROMFILE|LR_CREATEDIBSECTION);

  m_pic.SetBitmap(hbitmap);

  //设置定时器

  SetTimer(1,500,NULL);

  returnTRUE;

 

}

  7.在OnTimer(UINTnIDEvent)函数中添加代码如下:

voidCSplash:

OnTimer(UINTnIDEvent)

{

  staticinti;

  i++;

  if(i>

3)

  {

    //销毁定时器

    KillTimer

(1);

    this->

OnOK();

  }

OnTimer(nIDEvent);

  8.在OnLButtonUp,OnLButtonUp,OnLButtonUp,OnChar函数中加入以下代码:

  KillTimer

(1);

  this->

  9.在MySample.Cpp中引入头文件

#include"

Splash.h"

  在InitInstance()函数中加入代码:

BOOLCMySampleApp:

InitInstance()

  …

  AfxEnableControlContainer();

  CSplashsplash;

  splash.DoModal();

  至此,启动屏幕就Ok了!

VC++工程中加入SplashScreen

摘要

本文旨在剖析VC++工程中加入SplashScreen的原理,并给出在VC++MFC(exe)工程中加入SplashScreen的步骤。

关键字SplashScreen,原理

环境:

Windows98SE/2000,VC++6.0

SplashScreen-我们使用Word之类的软件在启动的短暂时间里就会看到它的身影。

它通常用以在程序启动时显示程序及用户名称,版权信息等。

我也不知道它准确的名称是什么(是闪屏吗?

),就这样称呼吧。

也许你也想在自己的工程里加入这样的特性,本文将以创建实际工程的方式逐步剖析其实现原理。

注意:

为避免实际所使用工程名给类或对象名带来的干扰,除非特别说明,在本文中将使用基类名如CWinApp、CMainFrame、CDialog来代替实际工程中的相应派生类名进行描述。

VisualC++是一个相当强大的C++开发工具,它内嵌了对SplashScreen的支持。

但是在MFCEXE类型工程中只是对带有主框架类的SDI或MDI工程提供了这一支持,基于对话框类的工程则被排除在外。

现在让我们开始吧。

第一步是在SDI工程中加入SplashScreen。

首先利用AppWizard生成一个SDI工程,除了其中DockingToolBar必须选择外(我认为这是MFC的一个Bug,当然这与本文讨论的SplashScreen没有关系),其他的文档-视图支持、状态条之类的都可以不要,这样可以尽量减少无用的代码。

通过IDE中的菜单Project->

AddtoProject->

ComponentsandControls,我们就可以从VisualC++Components中选择SplashScreen这个组件插入工程。

在点击了"

Insert"

后会弹出一个如下图所示的对话框,这是设置插入该工程中的SplashScreen的类名、显示用位图的ID及文件名,采用缺省值即可。

通过以上几步的操作,就会在工程目录下生成Splash.CPP和Splash.H文件,这便是CSplashWnd类的实现文件与头文件。

同时工程中CWinApp与CMainFrame类中的部分代码也会被修改,以实现CSplashWnd窗口的消息处理。

接着我们来看看CSplashWnd类的声明与主要的代码(已经过删减):

//类的声明

classCSplashWnd:

publicCWnd

  CSplashWnd();

  ~CSplashWnd();

  virtualvoidPostNcDestroy();

  staticvoidEnableSplashScreen(BOOLbEnable=TRUE);

  staticvoidShowSplashScreen(CWnd*pParentWnd=NULL);

  staticBOOLPreTranslateAppMessage(MSG*pMsg);

  BOOLCreate(CWnd*pParentWnd=NULL);

  voidHideSplashScreen();

  afx_msgintOnCreate(LPCREATESTRUCTlpCreateStruct);

  afx_msgvoidOnPaint();

  afx_msgvoidOnTimer(UINTnIDEvent);

  CBitmapm_bitmap;

   //SplashScreen窗口显示用的位图对象

  staticBOOLc_bShowSplashWnd;

//是否要显示SplashScreen的标志量

  staticCSplashWnd*c_pSplashWnd;

};

//是否使用SplashScreen

voidCSplashWnd:

EnableSplashScreen(BOOLbEnable)

  c_bShowSplashWnd=bEnable;

}

//创建CsplashWnd对象,并调用Create()创建窗口

ShowSplashScreen(CWnd*pParentWnd)

  //如果不要显示SplashScreen或SplashWnd对象已经被创建则返回

  if(!

c_bShowSplashWnd||c_pSplashWnd!

=NULL)

    return;

  c_pSplashWnd=newCSplashWnd;

c_pSplashWnd->

Create(pParentWnd))

    deletec_pSplashWnd;

  else

    c_pSplashWnd->

UpdateWindow();

//装入SplashScreen欲显示位图,通过CreateEx()激发OnCreate()完成窗口创建与设置

BOOLCSplashWnd:

Create(CWnd*pParentWnd)

m_bitmap.LoadBitmap(IDB_SPLASH))

    returnFALSE;

  BITMAPbm;

  m_bitmap.GetBitmap(&

bm);

  returnCreateEx(0,

      AfxRegisterWndClass(0,AfxGetApp()->

LoadStandardCursor(IDC_ARROW)),

      NULL,

      WS_POPUP|WS_VISIBLE,

      0,

      bm.bmWidth,

      bm.bmHeight,

      pParentWnd->

GetSafeHwnd(),

      NULL);

//销毁窗口,刷新框架

HideSplashScreen()

  DestroyWindow();

  AfxGetMainWnd()->

//利用窗口创建结构创建窗口,并设置定时器在750ms后触发OnTimer()

intCSplashWnd:

OnCreate(LPCREATESTRUCTlpCreateStruct)

  if(CWnd:

OnCreate(lpCreateStruct)==-1)

    return-1;

  CenterWindow();

//窗口居中显示

  SetTimer(1,750,NULL);

//设置定时器

  return0;

//将键盘和鼠标消息传递给CSplashWnd对象,以销毁窗口

PreTranslateAppMessage(MSG*pMsg)

  if(c_pSplashWnd==NULL)

  if(pMsg->

message==WM_KEYDOWN||

    pMsg->

message==WM_SYSKEYDOWN||

message==WM_LBUTTONDOWN||

message==WM_RBUTTONDOWN||

message==WM_MBUTTONDOWN||

message==WM_NCLBUTTONDOWN||

message==W

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 日语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1