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

在VC++中利用消息制作啟動封面

編輯:關於VC++

1.用Appwizard創建一個空的SDI工程Splash;

2.導入用作啟動封面的圖片;

(1)在創建的新工程Splash中,選擇ResourceView面板打開資源編輯器。右擊"Splash resources",在打開的快捷菜單中選擇“Insert”命令,選擇其中的“Bitmap”選項,然後單擊“Import”按鈕,准備導入用做啟動封面的BMP圖形文件。

(2)在ResourceView面板中,右擊剛導入的“IDB_MITMAP1”位圖資源,在打開的快捷菜單中選擇“properties”命令,將ID值改為便於理解與記憶的“ID_SPLASH”。

3.新建一個對話框資源,在其中添加導入的位圖;

(1)在ResourceView面板中,右擊“Dialog”資源。在打開的快捷菜單中選擇“Insert Dialog”命令,新建一個對話框資源。刪除對話框中的“OK”“Cancel”按鈕,選擇自己喜歡的對話框風格.

(2)在對話框資源中添加一個Picture控件,打開其"Picture properties"屬性對話框.選擇"General"標簽,在"Tpye"下拉框中選擇"Bitmap"選項,在"Image"下拉框中選擇前面導入的位圖資源的ID值"IDB_SPLASH".將對話框的資源的大小調整為和Picture控件大小相同.

(3)右擊資源編輯器,在打開的快捷菜單中選擇"ClassWizard"命令,彈出"Adding a class"對話框,為新建的對話框資源添加一個新類.在"New Class"對話框的"Name"文本框中輸入對話框類名"CsplashDlg",然後順序單擊"OK"按鈕關閉"New Class"和"ClassWizard"對話框.

4.編寫代碼,實現啟動封面的功能;

(1)添加一個指針成員變量"*splash".在工程工作區選擇"ClassView"面板,展開類樹,右擊"CMainFrame"類,在彈出的快捷菜單中選擇"Add Member Variable..." 命令,打開"Add Member Variable"對話框,然"Variable Type"文本框中輸入"CsplashDlg",在"Variable Name"文本框中輸入"splash".單擊"OK"按鈕關閉"Add Member Variable"對話框,在Splash.cpp文件中添加如下包含語句:#include "SplashDlg.h"

(2) 選擇"View"下拉菜單中的"ClassWizard"命令,打開"ClassWizard"對話框.選擇"Message Maps"標簽,在"Class name"下拉框中選擇"CMainFrame"類,然後在"Messages:"列表框中選擇消息"WM_TIMER".單擊"Add Function"按鈕添加"OnTimer"函數.

(3)雙擊"Member Function"列表框中的"OnTimer"函數,編輯該函數.函數清單如下:

void CMainFrame::OnTimer(UINT nIDEvent)
{
if (nIDEvent == 1)
{if (splash->IsWindowVisible())
{//啟動封面設置為當前活動窗口;
splash->SetActiveWindow();
splash->UpdateWindow();
//啟動封面停留時間;
Sleep(2000);
splash->SendMessage(WM_CLOSE);
}
else
{//應用程序窗口設置為當前活動窗口;
SetActiveWindow();
//清除WM_TIMER事件;
KillTimer(1);
}
}
//CFrameWnd::OnTimer(nIDEvent);
}

(4)在CMainFrame類的OnCreate函數中添加SetTimer函數,並添加顯示啟動封面的程序代碼.修改後的OnCreate函數清單如下:

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
//開始顯示啟動封面;
SetTimer(1,5,NULL);//添加ID號為1 的WM_TIMER事件,響應頻率不宜過大;
splash = new CSplashDlg();
//可以添加播放WAV聲音的代碼;
//sndPlaySound("welcome.wav",SND_ASYNC);
//PlaySound("welcome.wav",NULL,SND_ASYNC);
splash->Create(IDD_DIALOG1);
splash->ShowWindow(SW_SHOW);
splash->UpdateWindow();
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create status bar\n");
return -1; // fail to create
}
// TODO: Delete these three lines if you don't want the toolbar to
// be dockable
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);
//應用程序窗口居中顯示;
CenterWindow();
return 0;
}

編譯,鏈接後運行應用程序,顯示添加的啟動封面.(該程序在VC++ 6.0 中以成功的通過)

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