我的启动屏是用splash screen组件做的,我把这个函数放了好几个地方,都不能把启动屏和主框架错开显示。是不是这个方法不行,有别的解决办法吗?

解决方案 »

  1.   

    Splash Window缺省是在建立主窗口并显示了以后才开始显示的,你要先显示Splash Window,就要调整在CWinApp::Initinstance中的位置啊,要放在 if (!ProcessShellCommand(cmdInfo))
    return FALSE;
    之前顺便告诉你可以在需要的时候通知Splash Window关闭,如下// 隐藏启动画面
    if( pSplash )
    pSplash->PostMessage( WM_LBUTTONDOWN, MK_LBUTTON );
      

  2.   

    这样写可以的,相信你能看懂!
    int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
    CSplash *Dlg=new CSplash(this);
    // Dlg->Create(CSplash::IDD,this);
    Dlg->Create(IDD_SPLASH);
    Dlg->ShowWindow(SW_SHOW);
    Dlg->UpdateWindow();
    Sleep(1000);
    // Dlg->SendMessage(WM_CLOSE);
    Dlg->DestroyWindow(); if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
    return -1; if (!m_wndStatusBar.Create(this) ||
    !m_wndStatusBar.SetIndicators(indicators,
      sizeof(indicators)/sizeof(UINT)))
    {
    TRACE0("Failed to create status bar\n");
    return -1;      // fail to create
    } return 0;
    }
      

  3.   

    你在app的onnew之前,或者创建框架之前做
      

  4.   

    CSplash *Dlg=new CSplash(this);
    Dlg->Create(IDD_SPLASH);
    Dlg->ShowWindow(SW_SHOW);
    Dlg->UpdateWindow();
    Sleep(3000);
    Dlg->DestroyWindow(); 上面的这部分代码最好放到你的应用类初始化函数中
      

  5.   

    但是在我那自动生成的Splash.cpp里的
    BOOL CSplashWnd::c_bShowSplashWnd;
    CSplashWnd* CSplashWnd::c_pSplashWnd;
    CSplashWnd::CSplashWnd()
    {
    }不能接受this指针这个参数。
      

  6.   

    急!!急!!
    各位大虾请帮忙!
    我的启动屏是用splash screen组件自动生成的,没有
    Dlg->Create(IDD_SPLASH);里的IDD_SPLASH;
      

  7.   

    不要用splash screen组件做,你可以参考wordpad示例,他自己从CDialog派生一个类,在Initinstance函数中声明派生类的对象,调用create函数显示对话框,可以用sleep函数延时,在Initinstance调用结束后,自动清除对话框.