正文

为应用程序添加闪屏(splash)功能2005-11-03 10:26:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/ainterly/6588.html

分享到:

创建一个启动窗口,用来显示应用程序的相关信息

为了使该启动窗口再最早时刻被显示,启动窗口最好的位置可以放到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的文章,方法和这个不一样,不知道还能不能找到。

阅读(3355) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册