关于启动画面

转载 2007年09月19日 13:48:00
http://www.vckbase.com/document/viewdoc/?id=811

 

VC知识库上看到许多有关程序启动画面的程序而我觉得程序讲求的是"简而易懂",不需要太多的技巧,只要程序写的出来就好,于是我以另外一种简便的方式来设计程序启动画面同时在程序启动时播放音效,此程序的关键在于Sleep以及PlaySound这两个API函数与StrectBlt这个函数必须记得连结winmm.lib才可使用PlaySound函数,具体方法如下:
在CSplashWindow::CSplashWindow()建构函数当中加载位图以作为程序启动画面

CSplashWindow::CSplashWindow()
{
  m_Bitmap.LoadBitmap(MAKEINTRESOURCE(IDB_SPLASHWINDOW)); //Load Bitmap
  m_Bitmap.GetBitmap(&bmBitmap); //Get Bitmap Info
  /*Show Splash Window and Play SplashWindow.wav*/
  ::PlaySound("SplashWindow.wav", NULL, SND_ASYNC | SND_FILENAME);
}
接着是此程序的具体描述

步骤一.
建立三个类别,分别作为程序启动画面与主程序
class CSplashWindow : public CWnd //用于程序启动画面的SplashWindow类别
{
private:
  CDC MemDC;
  BITMAP bmBitmap;
  CBitmap m_Bitmap;
  CBitmap *Old_Bitmap;
public:
  CSplashWindow();
  ~CSplashWindow();

  void CreateSplash();
  afx_msg void OnPaint();
  DECLARE_MESSAGE_MAP()
};

class CMainWindow : public CFrameWnd //用于主程序的CMainWindow类别
{
public:
  CMainWindow();
  ~CMainWindow();
};

class CMainWindowApp : public CWinApp //用于程序初始化CMainWindowApp类别
{
public:
  CMainWindowApp();
  ~CMainWindowApp();
  virtual BOOL InitInstance();
};
步骤二.
在void CSplashWindow::OnPaint()当中使用StrectBlt复制位图到SplashWindow以当作启动画面
void CSplashWindow::OnPaint()
{
  CPaintDC dc(this);
  MemDC.CreateCompatibleDC(NULL); //Create Memory DC
  Old_Bitmap = MemDC.SelectObject(&m_Bitmap); //Select DC
  dc.StretchBlt(0,
                0,
                bmBitmap.bmWidth,
                bmBitmap.bmHeight, 
                &MemDC, 
                0,
                0,
                bmBitmap.bmWidth, 
                bmBitmap.bmHeight,
                SRCCOPY);

MemDC.SelectObject(Old_Bitmap); //Select Bitmap
}
步骤三.
在void CMainWindowApp::InitInstance()当中初始化启动画面的相关设定
BOOL CMainWindowApp::InitInstance()
{
  CSplashWindow *m_pSplashWindow = new CSplashWindow;
  m_pSplashWindow->CreateSplash();
  m_pSplashWindow->CenterWindow();
  m_pSplashWindow->ShowWindow(SW_SHOW);
  m_pSplashWindow->UpdateWindow();
  Sleep(3000); //Delay 3 Seconds
  m_pSplashWindow->DestroyWindow(); //Destroy Window
  delete m_pSplashWindow;

  m_pMainWnd = new CMainWindow;
  m_pMainWnd->ShowWindow(SW_SHOW);
  m_pMainWnd->UpdateWindow();
  return true;
}

CMainWindowApp MainWindowApp; 

相关文章推荐

UG7.0启动画面

  • 2015年06月02日 19:09
  • 1023KB
  • 下载

CE启动画面

  • 2014年10月17日 17:00
  • 2.58MB
  • 下载

iPad iPhone程序增加和删除启动画面

直接拖放到程序目录下面就可以了。   Default.png            iPhone默认启动图片,     320x480或者320x460 Default@2x.png...

VS2010启动画面

  • 2014年08月20日 21:07
  • 101KB
  • 下载

仿Eclipse启动画面

  • 2014年07月04日 13:53
  • 68KB
  • 下载

Swift - 启动画面放大淡出效果的实现1(使用launch image)

在之前的文章中:Swift - 延长启动图片的显示时间(LaunchImage)。介绍了通过在 viewDidLoad 方法中添加个线程休眠,可以延长启动图片的显示时间。但时间一到,整个启动页面就会直...

小小模仿Lofter启动画面

  • 2015年03月30日 17:08
  • 1.61MB
  • 下载

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

  • 2014年04月24日 15:23
  • 107KB
  • 下载

为Android应用程序添加Splash启动画面

多数应用程序为了在启动时显示公司、产品或者开发者等相关信息,都会有一个Splash界面。在Splash界面等待的同时,也可以预加载数据、系统检测等操作。有两种方法可以实现”Splash启动画面“效果....

可以作为程序启动画面

  • 2013年09月08日 14:11
  • 14.11MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于启动画面
举报原因:
原因补充:

(最多只允许输入30个字)