Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2070105
  • 博文数量: 909
  • 博客积分: 4000
  • 博客等级: 上校
  • 技术积分: 12260
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-06 20:50
文章分类

全部博文(909)

文章存档

2008年(909)

我的朋友

分类:

2008-05-06 21:51:44

一起学习
程序启动画面
作者:YU JHIN CHIN

下载本文示例源代码

在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;
如果您对此程序有任何问题欢迎来信指教r39710@giga.net.tw

下载本文示例代码


程序启动画面程序启动画面程序启动画面程序启动画面程序启动画面程序启动画面程序启动画面程序启动画面程序启动画面程序启动画面程序启动画面程序启动画面
阅读(237) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~