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

如何給基於對話框的應用加啟動畫面

編輯:關於VC++

很多基於對話框的程序都有一個啟動畫面,那麼如何為自己的對話框程序也加一個這樣的畫面呢?本文將一步一步教你實現每一個細節。其實VC++開發環境中有一個現成的 Splash Screen 組件,用這個組件很容易實現基於框架類(也就是CMainFrame)的程序的啟動畫面,那麼如果是對話框程序,沒有框架類怎麼辦呢?所以這個組件功能不是想象的那麼強。要實現基於對話框應用程序的啟動畫面必須另辟蹊徑。本文將定制一個C++類:CSplashWnd,用這個類可以增強原來的 Splash Screen 組件功能。它不但可以在用於具有CMainFrame的程序,同時也可以用於基於對話框應用的程序。

CSplashWnd的使用方法如下:

思路

需要改寫三個函數:

CDialog::OnInitDialog()
   CWinApp::InitInstance()
   CWinApp::PreTranslateMessage(MSG* pMsg)

如果你用應用程序向導(AppWizard)創建工程,那麼它會自動在CWinApp.h和CWinApp.cpp文件中產生 OnInitDialog 和 InitInstance 的聲明和實現的默認代碼,但是與CWinApp::PreTranslateMessage(MSG* pMsg)有關的處理必須自己添加到CWinApp派生類中。

具體步驟:

第一步:

在CDialog::OnInitDialog()方法末尾添加下列代碼:

// 創建並顯示啟動畫面
  CSplashWnd::ShowSplashScreen(3000, IDB_SPLASH24, this);

ShowSplashScreen函數的第一個參數是超時時間,以毫秒計算,表示啟動畫面持續顯示的時間;第二個參數是位圖圖像的資源標示符,表示啟動畫面顯示的圖像。最後一個參數是父窗口,此參數可以為NULL。

第二步:

在CWinApp::InitInstance()方法的開始處添加如下代碼:

// Enable the splash screen component based on the command line info.
  CCommandLineInfo cmdInfo;
  ParseCommandLine(cmdInfo);
  CSplashWnd::EnableSplashScreen(cmdInfo.m_bShowSplash);

這幾行代碼的作用是讓程序能解析和處理命令行信息。

第三步:

用類向導(ClassWizard)改寫 CWinApp::PreTranslateMessage(MSG* pMsg)方法,並添加如下代碼:

BOOL CDialogsplApp::PreTranslateMessage(MSG* pMsg)
   {
         // Route messages to the splash screen while it is visible
       if (CSplashWnd::PreTranslateAppMessage(pMsg)) {
        return TRUE;
       }
       return CWinApp::PreTranslateMessage(pMsg);
   }

編譯運行程序。

本文配套源碼

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