首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> VC 教學

VC++ 應用程式啟動畫面製作完全指南:四種實用方法詳解

     編輯:VC 教學

為什麼需要啟動畫面?

啟動畫面不僅能緩解大型程式載入時的等待枯燥感,更是展示軟體品牌、版本資訊與版權聲明的最佳位置。一個設計精良的啟動畫面能為使用者留下專業的第一印象。

方法一:使用 Visual C++ 內建 Splash Screen 元件(最快速)

這是 VC++ 提供的現成解決方案,適合單文件應用程式(SDI)。

  1. 準備圖片: 使用 Photoshop 等工具製作啟動圖,儲存為 BMP 格式。
  2. 建立專案: 用 AppWizard 建立單文件專案。
  3. 匯入位圖資源: 在資源編輯器中右鍵選擇 Import,匯入 BMP 檔。若超過 256 色會提示無法在編輯器顯示,確定即可。將資源 ID 改為 IDB_SPLASH。
  4. 加入 Splash Screen 控制項: 選單 Project → Add To Project → Components and Controls,雙擊 Visual C++ Components,選擇 Splash Screen 並插入。確認類別名稱與位圖資源 ID。
  5. 調整顯示時間: 編譯執行即可看到效果。若需修改停留時間,找到 CSplashWnd::OnCreate 中的 SetTimer(1, 750, NULL),第二個參數單位為毫秒,預設 750ms。

方法二:利用非模態對話框顯示啟動畫面(彈性較高)

同樣適用於 SDI 專案,自訂對話框外觀更自由。

  1. 建立 SDI 專案,匯入圖片資源 ID 設為 IDB_SPLASH。
  2. 新增對話框資源,建立類別 CSplashDlg。在對話框放入 Picture 控制項,屬性設為 Bitmap,Image 選擇 IDB_SPLASH。
  3. 調整對話框:移除預設按鈕,Style 頁取消 Title bar,調整圖片大小填滿客戶區並置中。
  4. 在 CMainFrame::OnCreate() 中建立、顯示並銷毀對話框:
#include "SplashDlg.h"
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    CSplashDlg *dlg = new CSplashDlg(this);
    dlg->Create(CSplashDlg::IDD, this);
    dlg->ShowWindow(SW_SHOW);
    dlg->UpdateWindow();
    Sleep(2000); // 停留 2 秒
    dlg->DestroyWindow();
    return 0;
}

方法三:透過 Timer 訊息控制顯示與關閉(非阻塞)

改良方法二,避免 Sleep 阻塞主執行緒,使用 WM_TIMER 實現非同步關閉。

  1. 重複方法二步驟 1-4。
  2. 用 ClassWizard 為 CMainFrame 加入 WM_TIMER 訊息處理。
  3. 在 MainFrm.h 中宣告 CSplashDlg *Splash; 並包含頭文件。
  4. 實作 OnTimer 與修改 OnCreate:
void CMainFrame::OnTimer(UINT nIDEvent)
{
    if (Splash->IsWindowVisible()) {
        Splash->SetActiveWindow();
        Splash->UpdateWindow();
        Sleep(2000); // 可改為 SetTimer 再次觸發
        Splash->SendMessage(WM_CLOSE);
    } else {
        SetActiveWindow();
        KillTimer(1);
    }
}

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    SetTimer(1, 0, NULL); // 立即觸發
    Splash = new CSplashDlg();
    Splash->Create(IDD_DIALOG1);
    Splash->ShowWindow(SW_SHOW);
    return 0;
}

方法四:對話框架應用程式專用啟動畫面(移植法)

對話框架應用無 CMainFrame,無法直接使用前三法。解決方案:將方法一產生的 Splash1.cpp/h 移植過來。

  1. 參考方法一建立 SDI 專案 Splash 產生啟動畫面類別。
  2. 建立對話框架專案 Cover。
  3. 將 Splash1.cpp、Splash1.h 複製到 Cover 專案並加入原始碼/標頭檔。匯入位圖資源 ID 設為 IDB_SPLASH。
  4. 修改 CCoverApp::InitInstance() 並啟用啟動畫面:
#include "Splash1.h"
BOOL CCoverApp::InitInstance()
{
    CCommandLineInfo cmdInfo;
    ParseCommandLine(cmdInfo);
    CSplashWnd::EnableSplashScreen(cmdInfo.m_bShowSplash);
    // ...
}
  1. 用 ClassWizard 為 CCoverDlg 加入 OnCreate 並顯示啟動畫面:
#include "Splash1.h"
int CCoverDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    // ...
    CSplashWnd::ShowSplashScreen(this);
    // ...
}

停留時間修改同方法一,調整 CSplashWnd::OnCreate 中的 SetTimer 參數即可。

總結

四種方法各有適用場景:方法一最簡單快速;方法二、三適合需自訂 UI 的 SDI 應用;方法四解決對話框架應用無法使用啟動畫面的問題。善用啟動畫面能有效提升軟體專業形象與品牌辨識度。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved