[轉(zhuǎn)]用VC.NET制作啟動(dòng)屏幕
[源]
http://upschool.com.cn/edu/1333/2006/85/10du135181_1.shtml基本原理是利用對(duì)話框窗口的特性,在啟動(dòng)時(shí)首先創(chuàng)建對(duì)話框,設(shè)置一個(gè)獲得位圖文件的句柄,利用Picture控件的SetBitmap(HBITMAP hBitmap)方法,使位圖文件充滿整個(gè)Picture控件窗口,最后設(shè)置定時(shí)器,整個(gè)啟動(dòng)屏幕就制作完成。
下面介紹具體實(shí)現(xiàn)步驟。
1. 打開VS.net的開發(fā)環(huán)境,新建VC++.net中的MFC應(yīng)用程序,輸入工程名稱MySample,點(diǎn)擊“確定”,“完成”;
2. 打開資源視圖,添加對(duì)話框,更改ID為ID_DIALOG_SPLASH,設(shè)置對(duì)話框Center屬性為True,Border屬性為“無”;
3. 在對(duì)話框中添加Picture控件,設(shè)置Picture控件的ID號(hào)為ID_PIC,Type屬性為“位圖”,Center image屬性為True,然后調(diào)整標(biāo)尺使對(duì)話框沒有外框,調(diào)整對(duì)話框的大小以適應(yīng)啟動(dòng)屏幕的要求,調(diào)整Picture的寬高使其充滿整個(gè)對(duì)話框窗口;
4. 雙擊對(duì)話框窗口,彈出類向?qū)?duì)話框,在類名中鍵入CSplash,選擇基類為Cdialog,點(diǎn)擊確定,定義控件Picture的控件變量為m_pic;
5. 在Csplash類中重載OnInitDialog()函數(shù),添加消息WM_CHAR,WM_TIMER,WM_LBUTTONUP,WM_MBUTTONUP,WM_RBUTTONUP;
6. 在OnInitDialog()函數(shù)中添加代碼如下:
BOOL CSplash::OnInitDialog() { CDialog::OnInitDialog(); //設(shè)置啟動(dòng)窗口背景,在整個(gè)窗口中充滿位圖 CRect lRect; m_pic.GetClientRect(&lRect);//得到Picture控件的窗口大小 lRect.NormalizeRect(); //設(shè)置位圖句柄 HBITMAP hbitmap=(HBITMAP)LoadImage(NULL,"splash.bmp",//更改你喜歡的位圖文件 IMAGE_BITMAP,lRect.Width(),lRect.Height(), LR_LOADFROMFILE|LR_CREATEDIBSECTION); m_pic.SetBitmap(hbitmap);
//設(shè)置定時(shí)器 SetTimer(1,500,NULL); return TRUE; } |
7. 在OnTimer(UINT nIDEvent) 函數(shù)中添加代碼如下:
void CSplash::OnTimer(UINT nIDEvent) { static int i; i++; if(i > 3) { //銷毀定時(shí)器 KillTimer(1); this->OnOK(); } CDialog::OnTimer(nIDEvent); } |
8. 在OnLButtonUp,OnLButtonUp,OnLButtonUp,OnChar函數(shù)中加入以下代碼:
{ KillTimer(1); this->OnOK(); } |
9. 在MySample.Cpp中引入頭文件
#include "Splash.h"
在InitInstance()函數(shù)中加入代碼:
BOOL CMySampleApp::InitInstance() { … AfxEnableControlContainer(); CSplash splash; splash.DoModal(); … } |