MFC啟動畫面設(shè)計玩過微軟的Office的人都知道,每當(dāng)打開Office軟件,在它初始化的那段時間里,都會出現(xiàn)一個畫面,這個畫面就是啟動畫面。 所謂啟動畫面也就是Splash Screen,你也可以說它是“炫耀畫面”。它常常用以顯示公司的標(biāo)志和版權(quán)等信息。 目標(biāo)用一張位圖來作為啟動畫面,在進入程序時顯示。 策略在應(yīng)用程序類的I n i t I n s t a n c e ()函數(shù)中,在最早時刻創(chuàng)建啟動窗口。啟動窗口用一個位圖類顯示在普通窗口中。 步驟
1.
1)
2) void CWzdSplash::Create(UINT nBitmapID) { m_bitmap.LoadBitmap(nBitmapID); BITMAP bitmap; m_bitmap.GetBitmap(&bitmap); int x=(::GetSystemMetrics(SM_CXSCREEN)-bitmap.bmWidth)/2; int y=(::GetSystemMetrics(SM_CYSCREEN)-bitmap.bmHeight)/2; CRect rect(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 for painting 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) 在應(yīng)用程序類的InitInstance()函數(shù)的開始處,創(chuàng)建該啟動類的一個實例,調(diào)用它的Create(),并強制它進行繪制。 CWzdSplash wndSplash; 2) 因為啟動窗口類創(chuàng)建在堆棧中,一旦InitInstance()返回,該窗口將被自動銷毀,因此,如果應(yīng)用程序花費大量時間進行初始化,則不必采用在應(yīng)用程序中加延時的方法,使啟動窗口停留足夠長的時間以確保讀取顯示的信息;如果應(yīng)用程序花費很少時間進行初始化,或者擔(dān)心高速機器把啟動窗口變成影像,添加下面代碼行到InitInstance( )的某個地方以對應(yīng)用程序進行延時處理。
至此,一個具有啟動畫面的小程序完成了,大家可以試試看它的運行效果。 |
|