玩過微軟的Office的人都知道,每當打開Office軟件,在它初始化的那段時間里,都會出現(xiàn)一個畫面,這個畫面就是啟動畫面。
所謂啟動畫面也就是SplashScreen,你也可以說它是“炫耀畫面”。它常常用以顯示公司的標志和版權等信息。
用一張位圖來作為啟動畫面,在進入程序時顯示。
在應用程序類的I n i t I n s t a n ce ()函數(shù)中,在最早時刻創(chuàng)建啟動窗口。啟動窗口用一個位圖類顯示在普通窗口中。
1.
1)
2)
void CWzdSplash::Create(UINTnBitmapID)
{
m_bitmap.LoadBitmap(nBitmapID);
BITMAP bitmap;
m_bitmap.GetBitmap(&bitmap);
intx=(::GetSystemMetrics(SM_CXSCREEN)-bitmap.bmWidth)/2;
inty=(::GetSystemMetrics(SM_CYSCREEN)-bitmap.bmHeight)/2;
CRectrect(x,y,x+bitmap.bmWidth,y+bitmap.bmHeight);
CreateEx(0,AfxRegisterWndClass(0),"",WS_POPUP|WS_VISIBLE|WS_BORDER,rect,NULL,0);
}
3)
void CWzdSplash::OnPaint()
{
CPaintDC dc(this); // device context forpainting
BITMAP bitmap;
m_bitmap.GetBitmap(&bitmap);
CDC dcComp;
dcComp.CreateCompatibleDC(&dc);
dcComp.SelectObject(&m_bitmap);
// draw bitmap
dc.BitBlt(0,0,bitmap.bmWidth,bitmap.bmHeight,&dcComp,0,0,SRCCOPY);
}
2.把啟動窗口類插入到InitInstance()函數(shù)中
1) 在應用程序類的InitInstance()函數(shù)的開始處,創(chuàng)建該啟動類的一個實例,調用它的Create(),并強制它進行繪制。
CWzdSplash wndSplash;
2) 因為啟動窗口類創(chuàng)建在堆棧中,一旦InitInstance()返回,該窗口將被自動銷毀,因此,如果應用程序花費大量時間進行初始化,則不必采用在應用程序中加延時的方法,使啟動窗口停留足夠長的時間以確保讀取顯示的信息;如果應用程序花費很少時間進行初始化,或者擔心高速機器把啟動窗口變成影像,添加下面代碼行到InitInstance( )的某個地方以對應用程序進行延時處理。
至此,一個具有啟動畫面的小程序完成了,大家可以試試看它的運行效果。