程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> 程序啟動畫面

程序啟動畫面

編輯:關於VC++

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

如果您對此程序有任何問題歡迎來信指教[email protected]

本文配套源碼

  1. 上一頁:
  2. 下一頁:
欄目導航
Copyright © 程式師世界 All Rights Reserved