读书人

MFC 主程序使用 Sleep() 时主程序界面

发布时间: 2012-03-15 11:50:38 作者: rapoo

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

读书人网 >VC/MFC

热点推荐