请教:一个基于对话框的程序,想在启动时加一个类似金山词霸或瑞星的LOGO,怎么实现啊?

解决方案 »

  1.   

    主要思路是这样的,在程序创建对话框前创建一个FrameWindow,然后在这个窗口显示一张图片(可以用BitBlt,等等),设定一个计时器,一定时间以后就将窗口关闭,然后再开始创建对话框。
      

  2.   

    就是Splash窗口嘛。
    到www.codeproject.com上搜索Splash.
      

  3.   

    vc控件里有SPLASH控件的,你插入到工程里一看就知道了
      

  4.   

    给你个资料
    http://www.vckbase.com/document/viewdoc/?id=513
      

  5.   

    用VC制作应用程序启动画面
    http://www.moon-soft.com/doc/49111.htm
      

  6.   

    http://www.codeproject.com/useritems/simplesplash.asp
      

  7.   

    我记得是某本vc实例学习的第一个例子
    CSplash组件
      

  8.   

    首先你得明白,闪屏就是一个窗口,我们先让它出来几秒钟,然后再destroy了.这就是基本原理. 
    那我们先在CSplashWnd建一个函数作创建窗口之用吧CreateSplashWnd() 
    type为void,函数里添加 
    CreateEx(0,AfxRegisterWndClass(0,AfxGetApp()->LoadStandardCursor(IDC_ARROW)),//注册类 
    "animatesplash",//窗口标题 
    WS_POPUP|WS_VISIBLE,//窗口为弹出式 
     0,0,bm.bmWidth,bm.bmHeight, //建立大小与位图大小相同的窗口 
    NULL, 
    NULL, 
    NULL ); 
    ----------------------------------------------------------- 
    下为要所添加的变量: 
     CDC dcMem;//内存设备环境 
     BITMAP bm; //创建位图结构变量 
     CBitmap m_bitmap; //创建位图对象 
     CBitmap *old_bitmap; //创建位图对象指针 
    ----------------------------------------------------------- 
    请在CSplashWnd()构造函数里初始化m_bitmap  m_bitmap.LoadBitmap(IDB_BITMAP1);//请先在添加一张位图资源 
     m_bitmap.GetBitmap(&bm); 
    接着要添加OnPaint()函数,这个函数是在要PAINT此窗口就要启动的消息响应函数(看过windows程序设计都知道) 
     CPaintDC dc(this);  
    dc.SelectObject(&m_bitmap); 
    if(!dcMem.CreateCompatibleDC(&dc))//选取与dc兼容的内 dc 
    return; 
    old_bitmap=dcMem.SelectObject(&m_bitmap); 
     (此处可添加算法) 
     dc.BitBl(0,0,bm.bmWidth,bm.bmHeight,&dcMem,0,0,SRCCOPY); 
    //此处是将位图从内存设备环境复制到显示设备环境中去 
    dcMem.SelectObject(old_bitmap);  
     
     
    准备工作完成,接着只要在InitInstance()里加一些代码就OK了, 
    代码如下 
     CSplashWnd * pSplashWnd=new CSplashWnd; 
    pSplashWnd->CreateSplashWnd(); 
    pSplashWnd->CenterWindow(); 
    pSplashWnd->ShowWindow (SW_SHOW); 
    pSplashWnd->UpdateWindow(); 
    Sleep(2000); //等待函数指定秒钟 
      if (pSplashWnd!=NULL)pSplashWnd->SendMessage (WM_CLOSE); //关闭窗口 
    delete pSplashWnd;