创建一个启动窗口,用来显示应用程序的相关信息 为了使该启动窗口再最早时刻被显示,启动窗口最好的位置可以放到InitInstance()中。 步骤: 1、创建一个从CWnd派生的启动窗口类,为方便可以用Class wizard 2、为该类添加Create()成员函数,用来显示相关信息。 void CSplashWnd::Create(UINT nID) { m_bitmap.LoadBitmapEx(nID,FALSE); //make the window at center int x=(::GetSysytemMetrics(SM_CYSCREEN)-mbitmap.m_Width)/2; int y=(::GetSystemMetrics(SM_CYSCREEN)-m_bitmap.m_Height)/2; CRect rect(x,y,x+m_bitmap.m_Width,y+m_bitmap.m_Height); CreateEx(0,AfxRegisterWndClass ,0),"", WS_POPUP|WS_VISIBLE|WS_BORDER,rect,null,0); } 3、添加WM_PAINT消息处理函数,把需要的位图绘制到屏幕上 void CWzdSplash::OnPaint() { CPaintDC dc(this); // device context for painting // get bitmap colors CPalette *pOldPal = d c . S e l e c t P a l e t t e ( m _ b i t m a p . G e t P a l e t t e ( ) , FA L S E ) ; d c . R e a l i z e P a l e t t e ( ) ; // get device context to select bitmap into CDC dcComp; d c C o m p . C r e a t e C o m p a t i b l e D C ( & d c ) ; d c C o m p . S e l e c t O b j e c t ( & m _ b i t m a p ) ; // draw bitmap d c . B i t B l t ( 0 , 0 , m _ b i t m a p . m _ Width, m_bitmap.m_Height, &dcComp,0,0,SRCCOPY); // reselect old palette d c . S e l e c t P a l e t t e ( p O l d P a l , FA L S E ) ; } 4、在应用程序类的InitInstance()函数开始处,创建启动窗口类的一个实例,并Create(). CSplashWnd spWnd; spWnd.Create(IDB_BITMAP);//create with your bitmap spWnd.UpdateWindow();//send WM_PAINT 5、根据程序初始化时间的长短,可是适当改变窗口显示时间。 Sleep(time);//postpone splash time 6、以前还看过另外介绍splash的文章,方法和这个不一样,不知道还能不能找到。

评论