在mfc中,程序一运行有个对话框出来,怎么在1秒后该对话框自动关闭显示主对话框

Andy516520 2016-04-08 09:30:31
BOOL CCSUIApp::InitInstance()
{


CproDlg pro;
pro.DoModal();
Sleep(1000);



CCSUIDlg dlg;
m_pMainWnd = &dlg;
dlg.DoModal();
return FALSE;
}
Sleep后的自动关闭代码应该怎么写,才能自动关闭 CproDlg 的窗口,新手谢谢大家帮助了
...全文
538 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Andy516520 2016-04-14
  • 打赏
  • 举报
回复
谢谢大家,问题已经解决了。附上代码和思路: 这是主界面的初始化 BOOL CCSUIApp::InitInstance() { CproDlg pro; pro.DoModal(); CCSUIDlg dlg; m_pMainWnd = &dlg; dlg.DoModal(); return FALSE; } 进入CproDlg类中,添加一个初始化消息,代码如下 BOOL CproDlg::OnInitDialog() { CDialog::OnInitDialog(); SetTimer(1,3000,NULL);//启动定时器3,定时时间是1秒 return TRUE; } 然后添加一个定时器消息 void CproDlg::OnTimer(UINT nIDEvent) { // TODO: Add your message handler code here and/or call default // SetTimer(1,3000,NULL);//启动定时器3,定时时间是1秒 CWnd* hWnd=FindWindow(NULL,_T("介绍")); if (hWnd) { hWnd->PostMessage(WM_CLOSE, NULL, NULL); } KillTimer(1); //关闭定时器 CDialog::OnTimer(nIDEvent); } 效果就是标题为“介绍”的对话框弹出来三秒后自动关闭,进入主界面对话框。 最后谢谢大家的帮助
Eleven 2016-04-13
  • 打赏
  • 举报
回复
CproDlg类的OnInitiDialog函数中SetTimer()启动一个定时器,在OnTimer中PostMessage(WM_CLOSE)关闭对话框即可。
Andy516520 2016-04-13
  • 打赏
  • 举报
回复
谢谢大家的回答,没有用sleep,用的定时器
Andy516520 2016-04-13
  • 打赏
  • 举报
回复
能说的具体一些么,怎么操作,框架怎么写,谢谢了
96掌门师兄 2016-04-10
  • 打赏
  • 举报
回复
pro.DoModal(); Sleep(1000); 这里DoModal()是一个阻塞调用,如果用户不关闭该对话框(在对话框上点击退出或者点击关闭按钮)代码就一直阻塞在这里 之后的sleep(1000)就不会被调用,后面的逻辑都执行不到,使用show方法吧。 还有,如果你这段代码,在UI线程里调用的话,UI会卡,用户体验不好。 自己写一个定时器的类,关联到CDialog类中,去关闭 吧
薛定谔之死猫 2016-04-09
  • 打赏
  • 举报
回复
CproDlg的初始化对话框成员中添加Timer,并在该窗口中处理Timer消息,一秒后调用模态对话框的onOk或者更底层的API关闭它。 这是因为只要你的 pro.DoModal()不返回,Sleep是没机会执行的~
fhw217 2016-04-09
  • 打赏
  • 举报
回复
定时器 EndDialog(...);
孤客天涯 2016-04-08
  • 打赏
  • 举报
回复
在CproDlg 内启动1秒定时器,在定时器中PostMessage给自己,让自己退出

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧