分享

CSDN 论坛

 行走在理想边缘 2016-08-16

为了让用户等待的时候不至于闲着慌,我就弄了启动画面,用一个线程去启动这个画面,然后让主进程继续初始化程序:


// main dialog
AfxBeginThread(InitProgramThread, this);
ShowWindow(SW_HIDE);
// init the toolbar
initToolBar();
// init member variables
initClassMemberVariables();
// init vedio play
initVedioPlay();


其中InitProgramThread代码如下:

UINT CUltrasonicSystemDlg::InitProgramThread(LPVOID param)
{
CWzdSplash wndSplash;                 
wndSplash.Create(IDB_SPLASH);
wndSplash.CenterWindow();
wndSplash.UpdateWindow();         
Sleep(3000);
::PostMessage(AfxGetMainWnd()->GetSafeHwnd(),WM_SHOW_DIALOG,NULL,NULL);
wndSplash.DestroyWindow();

return NULL;
}


发送 WM_SHOW_DIALOG 后,调用函数:


LRESULT CUltrasonicSystemDlg::OnShowMainWindow(WPARAM wParam, LPARAM lParam)
{
ShowWindow(SW_MAX);
return 0;
}


程序启动后,消息也会在子线程结束后发送给主线程,但是每次都是子线程里面的启动画面还没有结束,主对话框就弹出来了,我上面明明把它隐藏了的。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多