首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

MFC 主程序使用 Sleep() 时主程序界面假死,怎么解决

2012-03-15 
MFC 主程序使用 Sleep() 时主程序界面假死,如何解决!MFC 主程序使用 Sleep() 时主程序界面假死,如何解决!

MFC 主程序使用 Sleep() 时主程序界面假死,如何解决!
MFC 主程序使用 Sleep() 时主程序界面假死,如何解决!代码如下:
void CTxtDlg::OnButton1() 
{
// TODO: Add your control notification handler code here
try
{
ShellExecute(NULL,"open",_T("notepad.exe"),NULL,_T("C:\\windows\\"),SW_SHOWNORMAL);
}
catch(...) 
{
MessageBox("启动失败,请查看文件是否存在!");
}
Sleep(8000);//等待窗口建立
//窗口类名 -----> 窗口句柄
TCHAR lpClassName[]=TEXT("TFrmMain");
HWND hWnd=::FindWindow(lpClassName,NULL);
HWND hwnd3=hWnd;
::ShowWindow(hwnd3,SW_SHOWMINIMIZED);//最小化

}
MFC 主程序使用 Sleep() 时主程序界面假死,如何解决!

[解决办法]
8秒太长了,且Sleep后notepad窗口不一定创建好
用 CreateProcess + WaitForInputIdle 吧

[解决办法]
PROCESS_INFORMATION pi = {0};
if(CreateProcess(..., &pi)
{
 WaitForInputIdle(pi.hProcess);
 ...
}
else
{
 // ...
}
[解决办法]
用定时器轮训,别用sleep

热点排行